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