[英]Object behaviour changed after assigned the variable
我已經通過API從客戶端收到了查詢/參數(matchQuery) 。 當我在服務器端管理這個request.query.matchQuery時,它給了我{“ count”:{“ $ gt”:1}}這對我來說是很好的。
當我在這樣的其他變量上分配此參數時
var aggregateQuery = {
$match: request.query.matchQuery
}
現在我控制台aggregateQuery其返回值
{'$ match':'{“ count”:{“ $ gt”:1}}'}
它的行為得到改變。 但是我不想在單引號的右邊。
OUTPUT
{'$ match':{“ count”:{“ $ gt”:1}}}
要么
{$ match:{“ count”:{“ $ gt”:1}}}
要么
{$ 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}}' + `}`)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.