簡體   English   中英

req.query對象中的多余引號

[英]Extra quotes in req.query object

我對req.query對象中的額外引號有疑問。 我正在使用Angular.JS(1.5.8)和NodeJS(6.2.0)。 所以我的意思是:在客戶端,我有簡單的REST API

.factory('Users', function ($resource) {
   var Users = $resource("api/users/" + ":_id", { _id: "@_id" }, {update: {method: 'PUT'}, query:{ method: "GET", isArray: false }});
   return Users;
 })

像這樣使用

return Users.query({a: 'some text', b: 10}}).$promise.then(function(results){
            return results.users;
        });

一切正常,在服務器上,我得到的結果是console.log('Query parsing - ', req.query); - Query - { a: 'some text', b: '10' } Users.query({a: 'some text', b: {first: 10, second: 20}}) Query - { a: 'some text', b: '10' }但是,當我嘗試發送嵌套對象時: Users.query({a: 'some text', b: {first: 10, second: 20}})在服務器上,我得到帶有多余引號和無效對象的結果: Query - { a: 'some text', b: '{"first":10,"second":20}' } 結果,我不能將其用於貓鼬查詢。 當我等待{$text:{"$search":"admin"}}我收到了{$text:'{"$search":"admin"}'} 有人可以面對這個問題嗎? 謝謝您的幫助

JSON / Object到QueryString以及向后轉換有很多問題。 嵌套,數組,“空”,布爾值等。您剛遇到一個。

最簡單的解決方案是將JSON.stringify()對象作為查詢字符串值:

url = 'www.example.com' + '/resource' + '?json=' + JSON.stringify(dataObject);

瀏覽器將自動對JSON字符串進行URL編碼。 在其他客戶端上,您可能必須手動執行。

您可以將其解析回服務器上。 例如,這個expressjs中間件:

app.use(function(req, res, next){
   if(req.query.json){
      try {
        req.query.json = JSON.parse(req.query.json);
        next();
      }catch(err){
        next(err);
      }
   }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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