常量未反映在函数中

时间:2018-12-16 18:07:54

标签: mongoose

我有一个Node / Express / Mongoose API,其中有一个函数可以根据传递给它的ID和Type参数处理对文档的多次更新。

三个参数是: 类型:基本上是文档中的目标字段(即“ linkedin”,“ facebook” ...) id:我要更新的文档字段的ID 项目:我要推送到更新中的值。

我要做的第一件事是为查询创建一些常量:

  const sharedType = 'shared.' + type + '.item';
  const sharedTypeId = 'shared.' + type + '._id'
  const rootType = type + '.item';
  const rootTypeId = type + '._id'

因此,例如,我将传入:rootTypeId:'linkedin'来设置linkedin的查询参数,这将产生一个常量'linkedin._id',它将填充以下内容:

Cards.update({ rootTypeId :id},{$ set:{rootType:item}},{'multi':true},     功能(错误,卡片){       错误=== null吗? console.log('没有错误'+类型+'已为卡更新'):console.log('Error:',err);     }   )

然后我有另一个用于rootType的const,对于linkedin,它最终将是'linkedin.name'来定位项目字段。

我的问题是这个...

如果我将这样的代码硬编码:Cards.update({'linkedin._id':id},{$ set:{

有效。

但是使用常量不会,尽管它们的结果应该是相同的参数。

我在这里做什么错了?

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试一下:

Cards.update({ [rootTypeId]: id }, { $set: { [rootType]: item } }, { 'multi': true }, function (err, card) { err === null ? console.log('No errors ' + type + ' updated for cards') : console.log('Error: ', err); } )

基本上,rootTypeId和rootType应该放在方括号中,以便这些变量中的值成为查询对象中的键