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

このコードでは、会場に電話がない場合、アップサート操作は行われません。どうすればこれを回避できますか?nullでない場合はそのフィールドを更新したいのですが、nullの場合は、そのフィールドを含めないでください。

編集:

 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 に答える