我已经通过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}}}
答案 0 :(得分: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}}' + `}`)