11

私は次のモデルを持っています:

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 番目のアプローチが受け入れられるとしたら?

4

2 に答える 2