Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在Meteor中使用变量构造$pop查询_Javascript_Meteor - Fatal编程技术网

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

Javascript 无法在Meteor中使用变量构造$pop查询,javascript,meteor,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(f

我试图在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()调用实例化

有谁能建议我如何实现我想要的结果:从一个字段中弹出一个项目,在我进入函数之前我不一定知道该项目的名称

或者,如果我一开始就采取了一种完全错误的方法,我会接受关于如何构造此函数的更广泛的建议。

将文字字符串“tmp”用作键名,而不是传递给变量“tmp”的值

试试这个:

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