2016-05-14 36 views
-1

我一直在嘗試更新我有的集合。問題是,我不知道字段名稱,所以我依靠一些邏輯來提出字段名稱。流星更新期間允許使用字段名稱變量嗎?

例如

Er.update({ _id: "BCwrQEdiTr9GMmKWW" }, { 
    $set: { 
     "x" : y 
    } 
    }); 

其中x是字段名。

這是我的代碼

var obj = {}; 
obj[x] = y; 

Er.update({ _id: "BCwrQEdiTr9GMmKWW" }, {$set: {obj}}); 

我收到此錯誤

update failed: MongoError: The dotted field 'ersubjects.0.English' in 'obj.ersubjects.0.English' is not valid for storage.

Englishersubjects下一個領域,所以我想更新它這樣ersubjects.0.English和它的作品上蒙戈。

爲什麼這不工作在流星?

回答

0

您不能存儲密鑰中有點的文檔。有關說明,請參閱this answer

你可以做的是使用lodash的非常方便_.set函數來創建動態密鑰你的對象是這樣的:

var obj = {}; 
var variableKey = 'ersubjects'; 
_.set(obj, [variableKey, 0, 'English], 'someValue'); 

現在可以將這個對象安全地存儲到蒙戈。

+0

抱怨集不是一個函數。 –

+0

你使用什麼版本的lodash? '_.set'可以從3.7.0版本獲得 –

+0

OMG,我剛剛安裝了0.7.1,這看起來有點奇怪,來自看起來像他們的官方lodash發行版的氣氛'aodhes:lodash' –

相關問題