gpt4 book ai didi

node.js - Mongoose 不同并填充文档

转载 作者:IT老高 更新时间:2023-10-28 13:14:15 25 4
gpt4 key购买 nike

我有以下型号:

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

我希望能够找到关注者列表的所有帖子。当我使用 find 时,它当然会多次返回同一个帖子,因为多个用户可以关注同一个帖子。

所以我尝试使用 distinct,但我感觉“填充”之后不起作用。

这是我的代码:

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”方法一样。在查询中,您可以执行“填充”方法,所以我看不出我做错了什么。

我也尝试使用查询的 .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 的文档中一样,当您在查询中使用 distinct 方法时,您需要提供一个回调函数,因此在我的日志中我得到了错误。一种解决方法是使用一个虚拟回调函数,但我想避免这种情况......

有人知道为什么第一次尝试不起作用吗?如果提供一个虚拟回调,第二种方法是否可以接受?

最佳答案

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

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

关于node.js - Mongoose 不同并填充文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19077750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com