如何在Mongoose中更新时允许空字段?

时间:2012-12-11 16:35:09

标签: node.js mongodb mongoose

Venue.update({_id : venue.id},                         
    {
      name : venue.name,
      'contact.phone' : venue.contact.formattedPhone                      
    }, {upsert: true}).exec()

在此代码中,如果场地没有电话,则不会进行Upsert操作。我怎么能避免这个?我想更新该字段,如果它不为null,但如果为null,则不要包含该字段。

编辑:

 Venue.update({_id : venue.id}, 
{
    name : venue.name,
    'contact.phone' : ((!venue.contact.formattedPhone)? 
                      '' : venue.contact.formattedPhone)                           
}, {upsert: true, safe:false}).exec()

此代码工作正常,但这次,'手机'字段是''。我想要的是,如果字段未定义则隐藏字段。

1 个答案:

答案 0 :(得分:0)

以编程方式构建update对象,以便在未提供时不包含'contact.phone'

var update = {
    name : venue.name
};
if (venue.contact.formattedPhone) {
    update['contact.phone'] = venue.contact.formattedPhone;
}
Venue.update({_id : venue.id}, update, {upsert: true, safe:false}).exec();