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