gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:16:22 25 4
gpt4 key购买 nike

我通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com