猫鼬从当前元素中排序

时间:2018-12-02 12:48:20

标签: javascript node.js mongoose

我正在尝试创建一个摄影网站,并希望为每张照片添加按钮,以重定向到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。

2 个答案:

答案 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。