我不能从resq.params中读取参数值(节点JS)
我想从req.params读取参数值,但以不同的方式(我想在RESTIFY中做一个API)。
首先我读了req.params中可用的键,
var requestData = Object.keys(request.params);
比我循环每个键,并尝试获取其价值。 下面是代码;
for(i = 1; i < requestData.length; i++) { keyValue = requestData[i]; console.log(request.params.keyValue); }
但输出显示我UNDEFINED。
原因:我想这样读取参数,因为我不需要知道每个参数的名称。
以下是完整的代码:
var restify = require('restify'); var assert = require('assert'); var server = restify.createServer(); var client = restify.createStringClient({ url: 'http://example.com' }); function onRequest(request, response, next) { console.log(request.params); var requestData = Object.keys(request.params); var customJsonString = ''; var keyValue = ''; for(i = 1; i < requestData.length; i++) { keyValue = requestData[i]; console.log(request.params.keyValue); customJsonString += "" + requestData[i] + " : " + requestData[i] + ", "; } console.log(customJsonString); } function start() { server.use(restify.fullResponse()).use(restify.bodyParser()); server.get(/^\/(.*)/, onRequest); server.post(/^\/(.*)/, onRequest); server.listen(8888); console.log("Server has started."); } exports.start = start;
我将非常感谢有关这个问题的任何帮助。
试试这个:
console.log(request.params[keyValue]);
request.params.keyValue
表示给我的属性keyValue
,而上面的代码意味着给我的名字存储在variableskeyValue
属性的keyValue
。
另外,你确定要从i = 1
开始吗? Javascript的数组是基于0的,所以我想你想要i = 0
代替。
它可以帮助,如果你可以给我们你正在testing的URL,以及控制台输出你的得到。
不过,请注意,JavaScript中的数组有0基础的索引,你的循环应该是这样的:
for(var i = 0; i < requestData.length; i++) { }
为了遍历一个对象的属性,你应该使用for..in:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for…in
我不知道这是否会解决你的问题,但这是一个开始。