每个循环都带有 express js 的节点
Posted
技术标签:
【中文标题】每个循环都带有 express js 的节点【英文标题】:node with express js for each loop 【发布时间】:2016-05-18 14:14:01 【问题描述】:我将 express 与 node 一起用于我的 rest api,我需要运行一个 for 循环来确定输出 json。我的路线文件看起来
var Redis = require('ioredis')
var redis = new Redis(
port: 6379,
host: '127.0.0.1',
family: 4,
password: 'password',
db: 0
);
var Jsonresult = ;
var process = function(lat,lon,dist,unit)
Jsonresult.result = 'success';
var vehicle_type = new Array('small','medium');
vehicle_type.forEach(function(vehicle, index, arr)
redis.georadius ( vehicle,lat,lon ,dist,unit,'WITHCOORD','WITHDIST',function( ERR , Result )
if (ERR)
console.log(ERR);
Jsonresult[vehicle] = Result;
) ;
)
return Jsonresult;
router.get('/:lat/:lon/:dist/:unit', function(req, res, next)
var lat = req.params.lat;
var lon = req.params.lon;
var dist = req.params.dist;
var unit = req.params.unit;
res.json(process(lat,lon,dist,unit));
);
module.exports = router;
我预期的 json 输出是
"result":"success","small":[["driver_1","0.2779",["56.507199704647064","-0.12500104133338397"]],["driver_2","0.2782",["56.50730162858963","-0.12500104133338397"]]],"medium":[]
但我得到的只是
"result":"success"
代码有什么问题?
【问题讨论】:
你在res.json();
中通过Jsonresult
了吗?
是的,我添加了那个变量
你为什么使用require('async-foreach').forEach
?
传递GET请求时传递了什么?你能举个例子吗?
我已经更新了问题,我的获取参数是/vehicles/56.5072/-0.1275/5/km
【参考方案1】:
这样:
vehicle_type.forEach(function(vehicle, index, arr)
Jsonresult[vehicle] = true;
)
并在调用res.json()
时传递result
作为响应。
res.json(Jsonresult);
【讨论】:
您好,我也试过这个。但是当我刷新页面时,预期的结果即将到来。但第一次没有来。 也许你能解释一下你改变了什么以及为什么。 那么,我猜,使用res.render(Jsonresult)
而不是res.json(Jsonresult);
。让我知道这是否有效。
@FelixKling :我添加了 res.json(Jsonresult);
据我所知,这不是你唯一改变的东西。【参考方案2】:
vehicle_type.forEach(function(vehicle)
calls.push(function(callback)
redis.georadius ( vehicle,lat,lon ,dist,unit,'WITHCOORD','WITHDIST', function ( ERR , Result )
if (ERR)
return callback(ERR);
Jsonresult[vehicle] = Result;
callback(null, vehicle);
);
);
);
async.parallel(calls, function(err, result)
if (err)
return console.log(err);
res.json(Jsonresult);
);
这终于解决了我的问题:回答here
【讨论】:
以上是关于每个循环都带有 express js 的节点的主要内容,如果未能解决你的问题,请参考以下文章
带有 http.createServer 的服务器和在节点 js 中使用 express 的服务器之间的区别
使用 Express 和 Mongo 制作带有递归表的节点树
无法使用 express 和 multer 运行 node.js 服务器以在节点中上传文件