下面是我的架构和API
架构. js文件
const structure = new mongoose.Schema({
Name: {
type:String,
required:[true,"Please Enter Task"],
},
Completed: {
type:Boolean,
default:false
}
})
let work = mongoose.model('tasks',structure)
module.exports = work
我已经将其导入到API文件中,并编写了一个api来更新记录
const work = require("../models/schema.js")
async function updateone(req,res)
{
console.log(req.body)
try {
let treat = {"First" :"Michael" }
let newtask = await
work.findOneAndUpdate({_id:req.params.id},treat,{ overwrite: true })
res.status(200).json(newtask)
}
catch (error) {
res.status(500).json({status:"Fail",msg:"Wrong Parameter"})
}
}
现在,我想在更新时,只有名称应保留和Completed
字段不应该有。我知道, Mongoose 默认 Package 在$set
,因此我使用overwrite:true
,使我的整个文档将被替换。
然而,我看到值Name
被替换,但Completed
字段仍然存在。我还注意到,如果我提供一个全新的字段,那么什么都不会改变。这意味着如果:-
let treat = {"Job" :"Pilot" }
let newtask = await work.findOneAndUpdate({_id:req.params.id},treat,{ overwrite: true })
在这种情况下,没有任何变化,根本没有添加新字段。我在这里做错了什么?
1条答案
按热度按时间dgsult0t1#
使用
findOneAndReplace
: