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); }); });