我有一条路由来处理特定用户的帖子请求。我希望每个请求都能提供与给定作者匹配的最新 25 个帖子,并在下一个请求中提供之后的 25 个帖子。到目前为止我的代码:
router.get('/profile/:id', (req, res) => {
Post.find({'author': req.params.id})
.skip(req.query.skip)
.limit(25)
.populate({
path: 'author',
select: 'firstName lastName img'
}).then(
posts =>{
res.json({posts: modifyPosts(posts, req.user._id)})
}
).catch(
err => {
console.log(err)
res.json({err: err})
}
)
})
我想先提供最新的帖子,然后再向客户提供较旧的文档。 “req.query.skip”在每次请求之前在客户端递增。如果我理解正确的话,添加 .sort("date") 方法仍然会返回相同的 25 个文档。我编写的代码总是首先返回最旧的 25 个文档,所以我想基本上是在寻找一个选项,让我可以从下往上搜索数据库。
最佳答案
如果你想先获取最新的帖子,你需要使用 .sort({ date: -1 })
或 .sort('-date')
Mongoose 查询。
已更新
如果您使用.populate()
,排序应该在populate内部。
.populate({
path: 'author',
select: 'firstName lastName img',
options: { sort: { 'date': -1 }}
}
关于mongodb - 我可以逆序查询 MongoDB 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50959590/