【发布时间】:2021-01-08 18:46:20
【问题描述】:
Book 是一个可供用户投票选择的集合。当用户在客户端点击一个赞按钮时,投票会增加 1。我希望根据投票数按降序对集合进行排序,这会反映在前端。
投票正在更新并显示在前端,我只是无法使用排序功能。
update: function (req, res) {
console.log("this is reqbody" + JSON.stringify(req.body))
db.Book
.findOne({ bookID: req.body.bookID }, (err, result) => {
console.log(result);
console.log(result.vote)
// let voted = result.vote + 1;
db.Book.updateOne({ _id: result._id }, { vote: result.vote + 1 })
db.Book.find({}).sort({vote: 'decending'}).exec(function(err, docs)
{
})
.then(dbModel => {
console.log(JSON.stringify(dbModel))
res.json(dbModel)
}
)
}
)
},
【问题讨论】:
-
而不是 findOne 然后更新。您应该使用 findOneAndUpdate 并使用 $inc 运算符来增加投票。
标签: node.js reactjs mongodb mongoose mongoose-schema