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

在此代码中,如果场地没有电话,则不进行 Upsert 操作。我怎样才能避免这种情况?如果该字段不为空,我想更新该字段,但如果为空,则不要包含该字段。

编辑:

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

此代码工作正常,但这次,“电话”字段是“”。我想要的是,如果该字段未定义,则隐藏该字段。

4

1 回答 1

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();
于 2012-12-13T21:51:32.790 回答