【问题标题】:Constant not reflected in function常数未反映在函数中
【发布时间】:2019-05-17 05:17:35
【问题描述】:

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

三个参数是: type: 基本上是我文档中的目标字段(即“linkedin”、“facebook”...) id: 我要更新的文档的字段的 id item:我正在推动更新的价值。

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

  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 }, 功能(错误,卡){ 错误 === 空? console.log('No errors' + type + 'updated for cards') : console.log('Error: ', err); } )

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

我的问题是……

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

它有效。

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

我在这里做错了什么?

谢谢!!

【问题讨论】:

    标签: mongoose


    【解决方案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 基本上应该放在方括号中,因此这些变量中的值成为查询对象中的键

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 2020-11-09
      • 2011-09-13
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多