如何使用nodejs和georedis发送多个对象?

时间:2016-07-07 05:56:40

标签: node.js redis

我在redis数据库中有4套,我希望靠近所有4套的位置并作为api结果发送回来,下面的代码工作正常我只使用1套,但我的要求是得到从所有4套,请帮助我。

router.route('/get_near_by').post(function(req, res) {

var geo = georedis.initialize(client, {
    zset: 'LocationsSet',
    nativeGeo: false
});
var luxuryXL = geo.addSet('luxuryXL');
var luxurySedan = geo.addSet('luxurySedan');
var sedanFour = geo.addSet('sedanFour');
var sedanSix = geo.addSet('sedanSix');
var lat = req.body.lat;
var lng = req.body.lng;
var result = [];

var options = {
    withCoordinates: true, // Will provide coordinates with locations, default false
    withHashes: true, // Will provide a 52bit Geohash Integer, default false
    withDistances: true, // Will provide distance from query, default false
    order: 'ASC', // or 'DESC' or true (same as 'ASC'), default false
    units: 'km', // or 'km', 'mi', 'ft', default 'm'
    count: 10, // Number of results to return, default undefined
    accurate: true // Useful if in emulated mode and accuracy is important, default false
};

luxuryXL.nearby({latitude: lat, longitude: lng}, 5000, options, function(err, luxuryXL){
    if(err) {
        console.error(err)
    } else {
        return res.send(luxuryXL);
    }
   });
});

以下是我尝试的代码,但它们无效 -

luxuryXL.nearby({latitude: lat, longitude: lng}, 5000, options, function(err, luxuryXL){
    if(err) {
        console.error(err)
    } else {
        result['a'] = res.send(luxuryXL);
    }
});

1 个答案:

答案 0 :(得分:0)

您可以平行或顺序查询4组并发送它们。我建议使用像async或bluebird这样的promises来进行并行查询并将它们连接在一起并发送响应。希望这有帮助,如果您有任何其他问题,请告诉我