私は次のモデルを持っています:
var followerSchema = new Schema({
id_follower: {type: Schema.Types.ObjectId, ref: 'Users'},
id_post: {type: Schema.Types.ObjectId, ref: 'Posts'}
});
フォロワーのリストのすべての投稿を見つけられるようにしたいです。find を使用すると、複数のユーザーが同じ投稿をフォローできるため、もちろん同じ投稿が複数回返されます。
だから私はdistinctを使用しようとしましたが、後で「populate」が機能しないと感じています。
これが私のコードです:
followerModel
.distinct('id_post',{id_follower:{$in:followerIds}})
.populate('id_post')
.sort({'id_post.creationDate':1})
.exec(function (err, postFollowers) {
console.log(postFollowers);
})
投稿の配列を返すだけで、データは入力されていません。
私はmongoDBを初めて使用しますが、mongooseのドキュメントによると、「distinct」メソッドは「find」メソッドと同様にクエリを返す必要があります。また、クエリで「populate」メソッドを実行できるため、何が間違っているのかわかりません。
また、クエリの .distinct() メソッドを使用しようとしたため、コードは次のようになりました。
followerModel
.find({id_follower:{$in:followerIds}})
.populate('id_post')
.distinct('id_post')
.sort({'id_post.creationDate':1})
.exec(function (err, postFollowers) {
console.log(postFollowers);
})
その場合は機能しますが、マングースのドキュメントのように、クエリで個別のメソッドを使用するときにコールバック関数を提供する必要があるため、ログでエラーが発生します。回避策は、ダミーのコールバック関数を使用することですが、それは避けたいです...
最初の試みがうまくいかない理由を知っている人はいますか? そして、ダミーのコールバックを提供することによって 2 番目のアプローチが受け入れられるとしたら?