在 express API 中获取字符串以传递给 mongodb 查找函数

Posted

技术标签:

【中文标题】在 express API 中获取字符串以传递给 mongodb 查找函数【英文标题】:Fetch string in express API to pass into mongodb find function 【发布时间】:2018-12-16 04:54:01 【问题描述】:

我正在使用 express API js 来连接 mongoDB。我正在尝试将参数传递给 mongodb 的 find 函数,当我将其作为硬编码值传递时,它会正确获取数据,但是当我传递动态字符串值时,它不接受。请在下面找到代码以获得更清晰的想法,

-----API.JS-----

router.get('/external_sources_details_filtered',(req,res) =>
   connection((db) => 
   let parameterValue = String( 'frequency.'+ req.query.frequency);
        console.log(parameterValue);
        var query1 = parameterValue :$exists:true;
        var query2 ='frequency.Monthly':$exists:true;
        console.log(query1);
        console.log(query2);
        var projection = _id:0,sourceID:1,SourceName:1, Outstanding:1;
         db.collection('external_sources').find(query2)
         .project(projection).toArray()
         .then((external_sources_details_filtered) => 
          response.data = external_sources_details_filtered;
         res.json(response);
    )
  )      
 ) 

console.log 的输出(query1) = parameterValue: '$exists': true

console.log 的输出(query2) = 'frequency.Monthly': '$exists': true

为什么在将 parameterValue 转换为字符串之后,在 query1 中传递它时没有获取 parameterValue?

【问题讨论】:

因为您使用 parameterValue 作为对象的键。如果你想使用变量,你应该尝试[parameterValue]: $exists: true。这是一个 ES6 特性,你可以阅读更多关于它的信息here 成功了...非常感谢您的支持@user184994 【参考方案1】:

解决方案:因为我使用 parameterValue 作为对象的键。如果你想使用变量,你应该尝试 [parameterValue]: $exists: true .这是一个 ES6 特性,你可以在这里阅读更多关于它的信息http://wtfruby.com/javascript/2017/01/04/js-dynamic-attr-names.html

【讨论】:

以上是关于在 express API 中获取字符串以传递给 mongodb 查找函数的主要内容,如果未能解决你的问题,请参考以下文章

无法传递字符串以获取 OpenWeatherMap API JSON 中“描述”的值

node-express 如何在 URL 查询字符串中传递 DATE 参数以及如何解析它

如何使用 javascript fetch api 和 express multer 上传图像

将格式说明符传递给宏中的printf

使用Google NLP API将实体字符串传递给主要活动(Android)

用字符串填充argv(并获取argc)以传递给其他方法[重复]