现在,我开始学习nodejs并在试验GeoJson数据。 我正在尝试查找通过的坐标100000m之内的所有忍者。 对于每种忍者模型,我都将其坐标存储在db中。
但是当我尝试发出get请求时,出现此错误。
UnhandledPromiseRejectionWarning:MongoError:没有地理索引 geoNear 在queryCallback(C:\ Users \ Administrator \ Desktop \ NodeJs \ Node Rest \ node_modules \ mongodb-core \ lib \ cursor.js:248:25) 在C:\ Users \ Administrator \ Desktop \ NodeJs \ Node Rest \ node_modules \ mongodb-core \ lib \ connection \ pool.js:532:18 在_combinedTickCallback(内部/进程/next_tick.js:132:7) 在process._tickCallback(internal / process / next_tick.js:181:9)
我的代码-
router.get('/ninjas', function(req, res){
Ninja.aggregate().near({
near: { type: "Point", coordinates: [parseFloat(req.query.lng),parseFloat(req.query.lat)] },
maxDistance: 10000, // in 10k meters
spherical: true,
distanceField: "dist.calculated"
}).then(function(ninjas){
console.log(ninjas)
res.send(ninjas)
});
});
我的模式-
const GeoSchema= new Schema({
type:{
type:String,
default:"Point"
},
coordinates:{
type:[Number],
index:"2dSphere"
}
})
const NinjaSchema= new Schema({
name:{type: String,
required:[true,"Name is required"]
},
rank:{
type:String
},
available:{
type:Boolean,
default:false
},
geometry:GeoSchema
});
const Ninja= mongoose.model('ninja', NinjaSchema);
module.exports= Ninja