mongoose截然不同,并与文件填充

我有以下模型:

var followerSchema = new Schema({ id_follower: {type: Schema.Types.ObjectId, ref: 'Users'}, id_post: {type: Schema.Types.ObjectId, ref: 'Posts'} }); 

我希望能够find关于追随者列表的所有post。 当我使用find时,它会返回我当然多次相同的post,因为多个用户可以遵循相同的post。

所以我试图使用不同的,但我有感觉“填充”后不工作。

这是我的代码:

 followerModel .distinct('id_post',{id_follower:{$in:followerIds}}) .populate('id_post') .sort({'id_post.creationDate':1}) .exec(function (err, postFollowers) { console.log(postFollowers); }) 

它只返回我的post数组,并没有填充。

我是mongoDB的新手,但是根据mongoose的文档,“distinct”方法应该返回一个查询,就像“find”方法一样。 而在查询中,你可以执行“填充”方法,所以我不明白我做错了什么。

我也尝试使用查询的.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); }) 

在这种情况下,它的工作原理,但正如在mongoose的文档中,当你在查询中使用不同的方法时,你需要提供一个callback函数,所以在我的日志中,我得到了错误。 解决方法是有一个虚拟的callback函数,但我想避免…

有没有人有一个想法,为什么第一次尝试不工作? 如果第二种方法可以通过提供虚拟callback来接受?

考虑到mongoose目前缺乏支持,这是否正确?

 followerModel .find({id_follower:{$in:followerIds}}) .distinct('id_post',function(error,ids) { Posts.find({'_id':{$in : ids}},function(err,result) { console.log(result); }); });