0
私の距離によってデータベース上の場所をリストするページを作成しようとしています。私はURLを経由して座標のセットを渡すとき、私はこのエラーを取得:geoNearを使用してURLを介してインデックスを渡したときにMongoErrorがインデックスを報告しない
{
"name": "MongoError",
"message": "no geo indices for geoNear",
"waitedMS": 0,
"ok": 0,
"errmsg": "no geo indices for geoNear"
}
を入力から:http://localhost:3000/api/locations?lng=-133.482946&lat=45.263776
次のように私のコードは次のとおりです。
module.exports.locationsListByDistance = function (req, res) {
var lng = parseFloat(req.query.lng);
var lat = parseFloat(req.query.lat);
var point = {
type: "Point",
coordinates: [lng, lat]
};
var geoOptions = {
spherical: true,
maxDistance: 20000,
num: 10
};
if (!lng || !lat) {
sendJsonResponse(res, 404, {
"message": "lng and lat query parameters are required"
});
return;
}
Loc.geoNear(point, geoOptions, function(err, results, stats){
var locations= [];
if (err) {
sendJsonResponse(res, 404, err);
} else {
results.forEach(function(doc) {
locations.push({
distance: doc.dis,
name: doc.obj.name,
address: doc.obj.address,
rating: doc.obj.rating,
facilities: doc.obj.facilities,
_id: doc.obj._id
});
});
sendJsonResponse(res, 200, locations);
}
});
};
それは、if文をトリガーエラーが表示され、上記のエラーが表示されます。 コンソールにポイントオブジェクトを記録すると、そのスコープ内で正しく表示されます。
誰もこのエラーの経験がありますか?助言がありますか? 数時間のグーグル・グーグルがmongoクライアントの修正を考えましたが、mongoクライアントを直接使用していないため、解決策としては機能しません。
どのように 'Loc'スキーマとインデックスはありますか? [地理空間インデックス](https://docs.mongodb.com/manual/applications/geospatial-indexes/#geospatial-indexes)を設定しましたか? –