2017-08-18 5 views
0

メーターjsのシンプルなコードが10キロメートル以内のガレージの近くにありますmongodbデータベースでうまく動作しますrobomongoで手動で実行するとうまく動作しますが、私のルートでは、それはエラーを投げる。このような。

私は、あなたがこれについてサーバー側の方法を呼び出す必要があると言ったブログを見ています。だから私はサーバー側のルートを呼び出すために、以下のコードを使用します。

Router.route('/search/:name', 
        {name:'searchlist', 
         data:function(){ 

          var searchedParams = this.params.name.split('-'); 

          var lat = searchedParams.pop(); 
          var lng = searchedParams.pop(1); 

          return {searchValue: Centers.find({ coordinates: { $nearSphere: { $geometry: { type: "Point", coordinates: [lng,lat] }, $maxDistance: 10000 } } })} 
          } 
         }, { where: "server" } 


        ); 

誰かが助けてください。

答えて

0

クライアント側とサーバー側の経路の定義が混在しています。

サーバー側のルート次のようになります。

Router.route('/search/:name', function(...){...}, { where: 'server' }); 

クライアント側のルート次のようになります。

Router.route('/search/:name, { ... }); 

はこのように、あなたのルートは実際にはクライアント側のルートでありますここに記載されているように、$nearSphereオペレータのサポートはありません:https://github.com/meteor/meteor/blob/devel/packages/minimongo/NOTES

0

まず、ステュクスの答えを見て、この部分を排除することにより、ルートクライアントルートます

', { where: "server" }' 

今、ルータがクライアントに利用可能であること、のは、$ nearSphereの問題を修正しましょう、$にオペレータを変更することにより、近く。次のコードを使用してください:

Centers.find(
    { 
    geoloc: { 
     $near: { 
     $geometry: { 
      type: "Point", 
      coordinates: [lng, lat] 
     } 
     } 
    } 
    } 
); 

それが動作するかどうか試してみてください。

関連する問題