簡體   English   中英

分配變量后對象行為發生了變化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM