2013-07-12 60 views
1

我想在流星中的嵌入式數組上使用$ pop,並且我非常確定我對變量範圍和操作順序的有限理解正在導致我遇到的問題。

爲了提供一個簡單的例子,這個工程:

do_thing = function(foo) { 
    Coll.update(foo, {$pop: { "bar.baz": 1 }}); 
}; 

do_thing("123"); 

但這並不:

do_thing = function(foo, bar) { 
    var tmp = bar + ".baz" 
    Coll.update(foo, {$pop: { tmp: 1 }}); 
}; 

do_thing("123", "bar"); 

的核心問題是,更新成功時,我硬編碼數組從我希望彈出該項目,但更新失敗時該數組是動態構建的。我假設原因是而不是事實上它是'foo'起作用的變量,相反問題在於'tmp'可能無法及時實例化update()調用。

任何人都可以建議我如何才能實現我期待的結果:從字段中彈出一個項目,其名稱我不一定知道,直到我在函數中?另外,如果我首先採取一種完全錯誤的方法,那麼對於如何構建此功能的更廣泛的建議,我可以開放。

回答

2

字符串「tmp」用於鍵名稱,而不是您傳入變量「tmp」的值。

試試這個:

updateboj = {} 
updateobj[tmp] = 1 
Coll.update(foo, {$pop: updateobj});