我正在尝试创建一个摄影网站,并希望为每张照片添加按钮,以重定向到mongo数据库中的下一张/上一张。这是我到目前为止的内容:
// NEXT PHOTO - shows next photo
router.get("/:id/next", function(req, res){
Photo.find({}).sort({ _id: 1 }).limit(1).then(function(docs){
console.log(docs[0]._id)
res.redirect("/photos/" + docs[0]._id)
})
})
// PREVIOUS PHOTO - shows previous photo
router.get("/:id/previous", function(req, res){
Photo.find({}).sort({ _id: -1 }).limit(1).then(function(docs){
console.log(docs[0]._id)
res.redirect("/photos/" + docs[0]._id)
})
})
这给了我数据库中的第一个或最后一个项目,而不是上一个/下一个。如何修改sort()
,使其仅在当前元素的下方/上方排序?我没有使用jQuery。
答案 0 :(得分:2)
要获取下一条记录,您应该说:
router.get("/:id/next", function(req, res){
Photo.find({_id: {$gt: id}}).sort({_id: 1 }).limit(1)then(function(docs){
console.log(docs[0]._id)
res.redirect("/photos/" + docs[0]._id)
})
})
以及上一项:
router.get("/:id/next", function(req, res){
Photo.find({_id: {$lt: id}}).sort({_id: -1 }).limit(1)then(function(docs){
console.log(docs[0]._id)
res.redirect("/photos/" + docs[0]._id)
})
})
答案 1 :(得分:1)
下一张照片Photo.find({$gt: curId}).sort({ _id: 1 })
对于上一张照片Photo.find({$lt: curId}).sort({ _id: -1 })
curId
是照片的当前ID。