我试图在另一个对象中更新一个对象,但当对象更新时,会替换所有信息。
结构
var userSchema = mongoose.Schema({
local : {
email : {type: String, unique: true},
password : String
}
name: String
});
在更新之前
用户
{
name = 'foo',
local {
email: "foo@foo.com",
password: "foopass"
}
}
更新后
{
name = 'foo',
local {
email: "foo@foo.com"
}
}
这是我的问题:
router.put('/:id', function(req, res) {
User.findByIdAndUpdate(req.params.id, {
$set: { name: req.body.name, local: {email: req.body.email} }
}, { upsert: true },
function(err, obj) {
return res.json(true);
});
});
在$set
键中使用点表示法仅针对local
的email
属性,而不是更新整个local
对象:
router.put('/:id', function(req, res) {
User.findByIdAndUpdate(req.params.id, {
$set: { name: req.body.name, 'local.email': req.body.email }
}, { upsert: true },
function(err, obj) {
return res.json(true);
});
});