在Meteor中构造$ pop查询时无法使用变量

时间:2013-07-12 16:13:48

标签: javascript meteor

我正试图在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'可能无法及时实例化以进行更新()调用

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

或者,如果我首先采取一种完全错误的方法,我会接受更广泛的建议如何构建这个功能。

1 个答案:

答案 0 :(得分:2)

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

试试这个:

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