2016-04-21 113 views
1

之間的所有未定義的屬性我有以下電話:Meteor.call刪除客戶端和服務器

Meteor.call('updateDoc', id, obj);

與updateDoc定義爲:

Meteor.methods({ 
    updateDoc(id, doc) { 
     MyCollection.update(id, {$set: doc}); 
    } 
}); 

所有與obj是

{ 
    param1: undefined, 
    param2: 'defined!' 
} 
調用它

doc收到的結果爲

{ 
    param2: 'defined!' 
} 

這意味着在調用和方法觸發之間的某個地方,流星「清除」了未定義的屬性。

我懷疑他們正在使用JSON.stringify,這就是爲什麼undefined被刪除。

除了使用null而不是undefined(它的工作原理),有沒有辦法強制流星傳遞undefined?作爲一個方面說明,更新客戶端的集合也會導致「丟失」未定義的屬性,即在客戶端執行此更新實際上只會更新param2,並忽略param1,因此如果param1具有先前的值它會保持不變(而不是作爲取消設置爲蒙戈2.4以後做)

+0

,而不是不確定的,如果你不想使用*空*,你可以使用空字符串*「」* –

+0

你可以發佈你的插入方法讓我們看到DB中的文檔結構嗎?編輯你的代碼會更容易,然後 – Luna

回答

0

嘗試改變MyCollection.update(id, {$set: doc});這樣

MyCollection.update(id, { 
    $set: {docYouWantToChange: doc} 
}); 
+0

不知道我明白什麼會進入docYouWantToChange – TheZuck