分配变量后,对象行为发生了变化



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

当我像这样在另一个变量上分配这个参数时

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

现在我控制台聚合查询其返回

{ '$match': '{"计数":

{"$gt":1}}' }

它的行为被改变。但我不想在右边用单引号 边。

输出

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

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

{ $match:{计数:{$gt:1}}}

更正序列化 JSON中接收的数据的最佳方法是对其进行解析。JavaScript具有JSON全局对象,便于JSON转换并应用于应用程序中。

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

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

但在您的框架中更改为字符串

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}}' + `}`)

相关内容

最新更新