Mongodb 获取请求的空数组响应
我正在遵循一个完整的web开发指南。git存储库可以在以下位置找到: 在第6章中,我创建了一个API,用于显示基于GPS坐标的位置列表。当我测试get请求时,我得到一个空数组。获取请求URL为: 这是以下位置的控制器代码: 请注意,我使用名为$geonear的Mongoose聚合来查找靠近指定点的位置列表Mongodb 获取请求的空数组响应,mongodb,express,mongoose,angular-fullstack,Mongodb,Express,Mongoose,Angular Fullstack,我正在遵循一个完整的web开发指南。git存储库可以在以下位置找到: 在第6章中,我创建了一个API,用于显示基于GPS坐标的位置列表。当我测试get请求时,我得到一个空数组。获取请求URL为: 这是以下位置的控制器代码: 请注意,我使用名为$geonear的Mongoose聚合来查找靠近指定点的位置列表 const locationsListByDistance=异步(请求、恢复)=>{ const lng=parseFloat(req.query.lng); const-lat=par
const locationsListByDistance=异步(请求、恢复)=>{
const lng=parseFloat(req.query.lng);
const-lat=parseFloat(req.query.lat);
常数近={
键入:“点”,
坐标:[液化天然气,拉丁美洲]
};
常量地理选项={
距离字段:“计算的距离”,
关键词:“coords”,
对,,
最大距离:20000
};
如果(!lng | |!lat){
返回res
.现状(404)
.json({“message”:“需要lng和lat查询参数”});
}
试一试{
const results=等待位置聚合([
{
$geoNear:{
近的
…地理选项
}
}
]);
const locations=results.map(结果=>{
返回{
id:结果。\u id,
name:result.name,
地址:result.address,
评级:result.rating,
设施:结果。设施,
距离:`${result.distance.computed.toFixed()}m`
}
});
物件
.现状(200)
.json(地点);
}捕捉(错误){
物件
.现状(404)
.json(err);
}
};
如果我正确阅读了您的代码,那么您发送的聚合是:
Loc.aggregate([
{
$geoNear: {
{
type: "Point",
coordinates: [lng, lat]
},
distanceField: "distance.calculated",
key: 'coords',
spherical: true,
maxDistance: 20000
}
}
]);
您没有提到在集合的coords
字段上创建2dsphere索引,我假设您已经这样做了
该聚合似乎缺少字段名附近的,如:
Loc.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [lng, lat]
},
distanceField: "distance.calculated",
key: 'coords',
spherical: true,
maxDistance: 20000
}
}
]);
将来,请以内联方式发布文本,而不是以屏幕截图的形式发布。除其他外,它对移动用户更友好;另外,我在控制器的等待部分有近场名称。我只是按照他们书中描述的异步方法尝试用简单的Loc.find()
替换聚合,以确保其他一切正常工作。问题自行解决。我不知道怎么做