Meteor MongoDb findOne $附近并不总是有效

时间:2016-06-16 14:15:52

标签: ios mongodb cordova meteor geometry

我真的不明白。我在我的iPhone上运行的Meteor(v1.3.3,MongoDb v2.6.7)应用程序中有以下代码,但它并不总是有效。有时会这样做,有时则不会:

Places = new Mongo.Collection("places");

if(Meteor.isServer) {
    Places._ensureIndex({'loc':'2dsphere', name: 1});
}

if(Meteor.isClient) {
    var maxDistance = 50;
    ...
            latLng = Geolocation.latLng();
            if (! latLng)
            {
                console.warn('Could not get location!');
                return;
            }

            console.log('location: ' + latLng.lat + ' (' + typeof latLng.lat  + '), ' + latLng.lng + ' (' + typeof latLng.lng + ')');

            var placeNearby = Places.findOne({
                        loc: {
                            $near: {
                              $geometry: {
                                type: "Point",
                                coordinates: [latLng.lng, latLng.lat]
                              },
                              $maxDistance: maxDistance   //meters
                            }
                        }
                    });
    ...
}

在我获取placeNearby之后,我做了一个console.log(' placeNearby',placeNearby)。有时它确实找到了一个地方,有些时候却找不到。

我在iPhone 5s(iOS 9)上运行此功能,但Xcode:

meteor run ios-device --mobile-server http://10.0.1.10:3000

我测试时总是在同一个地方。我认为这可能是因为GPS坐标不精确,所以我将maxDistance增加到50000,但它没有改变任何东西。有趣的是,我的console.log没有为placeNearby输出undefined。它似乎输出一个空字符串。

但是,如果我在MongoDb终端中输入以下查询,它会检索一些结果:

db.places.find({
                 loc: {
                     $near: {
                       $geometry: {
                         type: "Point",
                         coordinates: [-73.56737205923496, 45.50178023952462]
                       },
                       $maxDistance: 50   //meters
                     }
                 }
             })

1 个答案:

答案 0 :(得分:0)

这是一个愚蠢的错误。我忘记了我在iPhone上关闭了wifi,因此无法与本地服务器通信。话虽这么说,我不会想到与服务器的连接是必要的。我认为所有数据都被复制到客户端的minimongo数据库中,并且应用程序可以独立运行。

我现在想知道是否有办法发布一个可以在设备上本地运行的Meteor应用程序。我读了一些关于GroudDB的内容,但是无法使用$附近的GroundDB找到任何关于几何查询的文档。