我不能从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; 

我将非常感谢有关这个问题的任何帮助。

       

网上收集的解决方案 "我不能从resq.params中读取参数值(节点JS)"

试试这个:

 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

我不知道这是否会解决你的问题,但这是一个开始。