仅更新提供的字段
Update only field that is provided
现在我正在这样做:
User.findById(data.id, function(err, user){
if(err) {
callback(err, null);
} else {
user.email = data.email;
user.name= data.name;
user.save(function(err, result){
if(err){
callback(err, null);
} else {
callback(null, result);
}
})
}
});
如果未提供 data.name,我如何不更新名称?
您可以检查值
Object.keys(data).forEach(function (el) {
if (data[el]) { // if value not `undefined`, `0`, `''`, `null`, `false`
user[el] = data[el];
}
})
另一种可能性是使用 underscore.js 并使用 extend
函数,它只会将属性分配给目标对象(如果已定义)。
var obj1 = { name: "Michael", email:"michael@example.com" };
var obj2 = { email: "michael@whatever.com" };
_.extend(obj1, obj2);
结果将是:
{
name: "Michael",
email: "michael@whatever.com"
}
现在我正在这样做:
User.findById(data.id, function(err, user){
if(err) {
callback(err, null);
} else {
user.email = data.email;
user.name= data.name;
user.save(function(err, result){
if(err){
callback(err, null);
} else {
callback(null, result);
}
})
}
});
如果未提供 data.name,我如何不更新名称?
您可以检查值
Object.keys(data).forEach(function (el) {
if (data[el]) { // if value not `undefined`, `0`, `''`, `null`, `false`
user[el] = data[el];
}
})
另一种可能性是使用 underscore.js 并使用 extend
函数,它只会将属性分配给目标对象(如果已定义)。
var obj1 = { name: "Michael", email:"michael@example.com" };
var obj2 = { email: "michael@whatever.com" };
_.extend(obj1, obj2);
结果将是:
{
name: "Michael",
email: "michael@whatever.com"
}