javascript - 分配变量后对象行为发生变化

标签 javascript node.js object

我通过 API 从客户端收到了查询/参数(matchQuery)。 当我在服务器端控制台这个 request.query.matchQuery. 时,它给我 {"count":{"$gt":1}} 这对我有好处.

当我像这样将此参数分配给另一个变量时

var aggregateQuery = {
             $match: request.query.matchQuery
 }

现在我控制台aggregateQuery它的返回

{ '$match': '{"count":{"$gt":1}}' }

它的行为发生了改变。但我不想在右边加单引号 侧面。

输出

{ '$match':{"count":{"$gt":1}}}

OR

{ $match:{"count":{"$gt":1}}}

OR

{ $match:{count:{$gt:1}}}

最佳答案

纠正以序列化 JSON 形式接收的数据的最佳方法是解析它。 JavaScript 有 JSON 全局对象,方便 JSON 转换并应用于应用程序。

在您的案例中,证据表明来自客户的请求如下:

  "{\"count\":{\"$gt\":1}}"

但在您的框架中更改为STRING

   typeof('{"count":{"$gt":1}}')    ==>   'string'

这不是对象

要使用request.query.matchQuery作为java脚本对象,您可以将其转换为JavaScript对象。有关更多详细信息,请参阅以下示例:

var aggregateQuery = {
   $match: JSON.parse(request.query.matchQuery)
}

注意:

如果您未处于严格模式,请添加

 "use strict"

您可以使用

执行您的代码
 eval( code to be execute )

例如

 eval(`var e = { '$match':` + '{"count":{"$gt":1}}' + `}`)

关于javascript - 分配变量后对象行为发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51999005/

相关文章:

javascript - 如何加载 PEM 格式的公钥进行加密?

php - 兼容Javascript和PHP的RSA加密/解密

javascript - 过滤对象数组的性能

javascript - 使用工厂和 AngularJS 在 ngclick 方法内创建对象

R:我应该使用与函数参数相同的名称命名变量吗?

javascript - 如果页面上的动画类不是唯一的,动画模块将停止正常工作

javascript - 收到新数据时重新加载 Angular 表

mysql - 使用mysql和nodeJs更新多条记录

javascript - 如何用javascript计算上周的工资?

node.js - 如何在 Alexa Skill lambda 函数中正确指定 SSML?