我有一条使用猫鼬的快速路线。该.findByIdAndUpdate无法正常工作。我看到“ removeId”进来了,第二个console.log显示了正确的记录...但是它没有更新!我在这里做错什么了吗?
router.post('/highlight', jsonParser, (req, res) => {
const { removeId, addId } = req.body;
console.log('removeId', removeId)
Article
.findByIdAndUpdate(removeId, {
featured: false
})
.then(updatedArticle => {
console.log('updated article', updatedArticle)
答案 0 :(得分:1)
这是一个奇怪的默认值,但是findByIdAndUpdate在默认情况下不会返回更新的记录。您必须通过{new:true}才能获得它。
router.post('/highlight', jsonParser, (req, res) => {
const { removeId, addId } = req.body;
console.log('removeId', removeId)
Article
.findByIdAndUpdate(removeId,{new: true}, {
featured: false
})
.then(updatedArticle => {
console.log('updated article', updatedArticle)
答案 1 :(得分:0)
Mongodb findOneAndUpdate
方法具有一个名为returnNewDocument
的选项,根据documentation:
可选。设置为true时,返回更新的文档,而不是 原始文件。默认为 false 。
猫鼬包装了该方法,但根据其code/documentation调用了通过选项new
:
outer.post('/highlight', jsonParser, (req, res) => {
const { removeId, addId } = req.body;
console.log('removeId', removeId)
return Article.findByIdAndUpdate(removeId, {featured: false}, {new: true})
.then(updatedArticle =>
console.log('updated article', updatedArticle)
)
})
也不要忘记您的发帖方法中的return
Article.findByIdAndUpdate
。