GeoJSON对象上的Mongoose查询

GeoJSON对象上的Mongoose查询,mongoose,mongodb-query,geojson,mongoose-schema,mongodb-geospatial,Mongoose,Mongodb Query,Geojson,Mongoose Schema,Mongodb Geospatial,我正在尝试查询一些餐馆,它们是按到某个位置(用户的位置)的距离订购的。 我有一个“餐馆”收藏,里面有这样的文件: { ... “地点”:{ “类型”:“点”, “坐标”:[7.756894,45.093654] }, ... } 我的猫鼬模式如下所示: const restaurantSchema=new mongoose.Schema({ ... 地点:{ 类型:{ 类型:字符串, 枚举:[“点”], 必填项:true }, 坐标:{ 类型:[编号], 必填项:true } }, ... }

我正在尝试查询一些餐馆,它们是按到某个位置(用户的位置)的距离订购的。 我有一个“餐馆”收藏,里面有这样的文件:

{
...
“地点”:{
“类型”:“点”,
“坐标”:[7.756894,45.093654]
},
...
}
我的猫鼬模式如下所示:

const restaurantSchema=new mongoose.Schema({
...
地点:{
类型:{
类型:字符串,
枚举:[“点”],
必填项:true
},
坐标:{
类型:[编号],
必填项:true
}
},
...
});
restaurantSchema.index({location:'2dsphere'});
module.exports=mongoose.model('Restaurant',restaurantSchema)
在此集合上,我定义了以下索引:

在我的nodejs服务器中,我有以下函数尝试检索用户当前位置(在请求头中接收)附近的餐厅(按距离排序):

getRestaurantsNearYou:函数(请求、恢复){
if(req.headers.lng和req.headers.lat){
餐馆,找({
地点:{
$near:{
$geometry:{
键入:“点”,
坐标:[parseFloat(req.headers.lng),parseFloat(req.headers.lat)]
},
$maxDistance:5000
}
}
}).然后(功能(呃,餐厅){
控制台.日志(餐厅);
return res.json({success:true,restaurants:restaurants});
}).catch(err=>{if(err)throw err;});
}否则{
返回res.json({success:false,msg:res.\uuuu('invalidArgumentsErrorMsg')})
}
}
这段代码不会抛出任何错误,但是这个函数的返回只是

{
成功:真的
}
我试图返回的变量“restaurants”是未定义的

我做错了什么?

我太傻了。 一切正常,只是回调没有得到正确的变量。将我的功能更改为此解决了问题:

if(req.headers.lng&&req.headers.lat){
var restaurants=wait Restaurant.find({
地点:{
$near:{
$geometry:{
键入:“点”,
坐标:[parseFloat(req.headers.lng),parseFloat(req.headers.lat)]
},
$maxDistance:50000
}
}
});
控制台.日志(餐厅);
}否则{
返回res.json({success:false,msg:res.\uuuu('invalidArgumentsErrorMsg')})
}