Javascript 无法在Meteor中使用变量构造$pop查询
我试图在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
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} );