现在我这样做:
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,如何更新名称?
答案 0 :(得分:1)
您可以查看值
Object.keys(data).forEach(function (el) {
if (data[el]) { // if value not `undefined`, `0`, `''`, `null`, `false`
user[el] = data[el];
}
})
答案 1 :(得分:0)
另一种可能性是使用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"
}