Tile38靠近查询节点回调函数不起作用

时间:2017-05-16 16:08:53

标签: node.js database caching redis

我正在构建一个小型GEO应用程序,它正在使用http://tile38.com/https://www.npmjs.com/package/tile38节点模块。一切正常,但我无法从节点模块的NEARBY查询得到结果。看起来回调功能不起作用,我花了很多时间但却找不到出路。我想要的是从附近的查询中获取结果并分配给变量。

以下是代码:

var Tile38 = require('tile38');

var client = new Tile38({host: 'localhost', port: 9851, debug: true });

// set a simple lat/lng coordinate
client.set('fleet', 'truck1', [33.5123, -112.2693])
// set with additional fields


client.nearbyQuery('fleet').distance().point(33.5123, -112.2693, 6000).execute((err, results) => {
    console.log("########");
    // this callback will be called multiple times
    if (err) {
        console.error("something went wrong! " + err);
    } else {
        console.log(results + "##########");
    }
});;

但是当我尝试以下简单查询时,它工作正常。

client.get('fleet', 'truck1').then(data => {
  console.log(data); // prints coordinates in geoJSON format 

}).catch(err => {
  console.log(err); // id not found  
});

此外,当我在tile38-cli中尝试RAW查询时,它工作正常。

NEARBY fleet POINT 33.5123 -112.2693 6000

任何帮助都会受到赞赏。

提前致谢。

修改 我也试过以下但是没有用。

let query = client.nearbyQuery('fleet').distance().point(33.5123, -112.2693, 6000)
query.execute(function(results).then(results => {
            console.dir(results);  // results is an object.
    }))

收到以下错误

query.execute(function(results).then(results => {
                                       ^
SyntaxError: Unexpected token .

2 个答案:

答案 0 :(得分:2)

这里是Tile38节点库的作者。很抱歉让这个工作变得困难。我注意到自述文件中的拼写错误可能会让你失望。我会纠正这个。

execute()方法返回一个Promise,并且(正如您已经想到的那样)该示例应该已经声明了

query.execute(function(results).then(results => {
    console.dir(results);
});

而不是

.html()

答案 1 :(得分:1)

经过长时间的调试后,我发现以下代码正在运行:

let query = client.nearbyQuery('fleet').distance().point(33.5123, -112.2693, 6000)
query.execute().then(data => {
            console.dir(results);  // results is an object.
    }))