如果age
字段为null或未定义,我如何告诉Mongoose 保存?
或者我能以某种方式在Express中这样做吗?
快速
router.put('/edit/:id', function(req, res) {
Person.findOneAndUpdate({ _id: req.params.id }, {
name: req.body.updateData.name,
age: req.body.updateData.age
}, { new: true });
})
Mongoose Schema
var PersonSchema = new Schema({
name: { type: String},
age: {type: String}
})
探索(如果你问为什么我需要这个)
我为new person
和edit person
使用了相同的html模板。当我创建一个新人时,如果我将name
字段留空,Mongoose将仅保存age
字段。但是当我使用编辑模板时,即使字段为空,Mongoose也会始终将age
字段设置为 null 。我无法想到任何阻止它的事情。
答案 0 :(得分:0)
您可以在数据库更新之前管理您的请求数据,例如:
router.put('/edit/:id', function(req, res) {
let update = {name: req.body.updateData.name};
if (req.body.updateData.age != "") {
update.age = req.body.updateData.age;
}
Person.findOneAndUpdate({ _id: req.params.id }, update, { new: true });
})
答案 1 :(得分:0)
let update = {
name: req.body.updateData.name,
age: req.body.updateData.age
};
if (update.age === null || update.age === undefined) delete update.age
Person.findOneAndUpdate({ _id: req.params.id }, update, { new: true });