2012-12-11 21 views
1
Venue.update({_id : venue.id},       
    { 
     name : venue.name, 
     'contact.phone' : venue.contact.formattedPhone      
    }, {upsert: true}).exec() 

在這段代碼中,如果場地沒有電話,Upsert操作沒有完成。我怎樣才能避免這種情況?我想更新該字段,如果它不爲空,但如果爲空,只是不包括該字段。如何在Mongoose中更新時允許空字段?

編輯:

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

此代碼工作正常,但這個時候, '電話' 字段'。我想要的是,隱藏該領域,如果它是未定義的。

+0

是否使用'null'。如果是這樣,請嘗試'undefined'。我想這個線程可能會幫助http://stackoverflow.com/questions/12636938/set-field-as-empty-for-mongo-object-using-mongoose –

+0

我們可以做一些像'如果格式化的電話==未定義的聯繫人。電話是''? – Burak

+0

其實,我是Django,他正在轉型爲node.js.我對mongoengine很有經驗。我還沒有意識到貓鼬多。我想你也是一個Django人切換到節點:) –

回答

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(); 
相關問題