首页 > 解决方案 > 猫鼬从当前元素向下排序

问题描述

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

标签: javascriptnode.jsmongoose

解决方案


要获得下一条记录,您应该说:

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

推荐阅读