2015-01-12 3 views
0

Теперь я делаю это:Update только поле, которое обеспечивается

  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 не предусмотрено?

ответ

1

Вы можете проверить значения

Object.keys(data).forEach(function (el) { 
    if (data[el]) { // if value not `undefined`, `0`, `''`, `null`, `false` 
    user[el] = data[el];  
    } 
}) 
0

Другая возможность заключается в использовании underscore.js и пользователю функции extend, который будет назначать только свойства целевого объекта, если они определены.

var obj1 = { name: "Michael", email:"[email protected]" }; 
var obj2 = { email: "[email protected]" }; 
_.extend(obj1, obj2); 

Результат будет выглядеть так:

{ 
    name: "Michael", 
    email: "[email protected]" 
} 
Смежные вопросы