我正在尝试从 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;
我真的很感激有关这个问题的任何帮助。
答案 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
我不知道这是否会解决您的问题,但这是一个开始。