req.query只检测来自URL的单个参数

时间:2015-04-09 12:56:03

标签: node.js url express

我有以下测试代码,

app.use(function(req,res,next)
{

console.log("Params : " + req.params);

console.log("Path : " + req.path);

console.log("Query :" +req.query);


for(var params in req.query)
{

    console.log(params);
}

res.end("processed");

});

每当我使用以下网址生成请求时

http://127.0.0.1:8080/path/resource/myname?user=alanz&password=alpacasocks

我获得了输出

Params : [object Object]
Path : /path/resource/name
Query :[object Object]
user

它似乎没有检测到第二个查询变量。使用curl生成请求。

3 个答案:

答案 0 :(得分:0)

var data = req.query;

req.query将产生如下对象

{user:"alanz", password: "alpacasocks"}

您可以通过点符号

提取用户名和密码
va username = data.user;      //print "alanz"
va password = data.password;  //print "alpacasocks"

由于

答案 1 :(得分:0)

因为在express' api中它是这样的:

// GET /shoes?order=desc&shoe[color]=blue&shoe[type]=converse

req.query.order
// => "desc"

req.query.shoe.color
// => "blue"

req.query.shoe.type
// => "converse"

我认为会是这样的:

// GET /users?user[name]=myname&user[password]=mypassword

req.query.user.name
// => "myname"

req.query.user.password
// => "mypassword

因为您要查询同一对象的2个值,而不是2个不同的对象。也许您只想将其用作参数,例如here

PS:无论如何,在任何实际情况下,我都不会像这样处理密码。

答案 2 :(得分:0)

对我来说,当 URL 包含在 ""

中时 curl 命令起作用
curl "http://127.0.0.1:8080/path/resource/myname?user=alanz&password=alpacasocks"

在 req.query 中返回用户和密码