1

我正在尝试在 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”可能没有及时实例化以进行 update() 调用。

任何人都可以建议我如何实现我正在寻找的结果:从一个字段中弹出一个项目,直到我在函数中之前我不一定知道它的名称?

或者,如果我一开始就采取了完全错误的方法,我愿意接受有关如何构建此功能的更广泛建议。

4

1 回答 1

2

文字字符串“tmp”用于键名,而不是您为变量“tmp”传递的值。

尝试这个:

updateboj = {}
updateobj[tmp] = 1
Coll.update(foo, {$pop: updateobj} );
于 2013-07-12T20:01:52.990 回答