我无法在retify中读取req.params中的params值(节点JS)

时间:2014-02-17 13:25:25

标签: javascript node.js restify

我正在尝试从 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);
        }

但输出显示我未完成。

原因:我试图以这种方式读取参数,因为我不需要知道每个参数的名称。

以下是完整的代码:

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;

我真的很感激有关这个问题的任何帮助。

2 个答案:

答案 0 :(得分:2)

请改为尝试:

console.log(request.params[keyValue]);

request.params.keyValue表示向我提供属性keyValue 的值,而上面的代码表示向我提供其名称存储在其中的属性的值变量keyValue

另外,您确定要从i = 1开始吗? Javascript-arrays是从0开始的,所以我想你需要i = 0

答案 1 :(得分:0)

如果您现在可以向我们提供您正在测试的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

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