我正试图在Meteor的嵌入式阵列上使用$ 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'可能无法及时实例化以进行更新()调用
任何人都可以建议我如何实现我正在寻找的结果:从一个字段中弹出一个项目,在我进入函数之前我不一定知道它的名字?
或者,如果我首先采取一种完全错误的方法,我会接受更广泛的建议如何构建这个功能。
答案 0 :(得分:2)
文字字符串“tmp”用于键名,而不是您为变量“tmp”传递的值。
试试这个:
updateboj = {}
updateobj[tmp] = 1
Coll.update(foo, {$pop: updateobj} );