Mongodb 获取请求的空数组响应

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

我正在遵循一个完整的web开发指南。git存储库可以在以下位置找到:

在第6章中,我创建了一个API,用于显示基于GPS坐标的位置列表。当我测试get请求时,我得到一个空数组。获取请求URL为:

这是以下位置的控制器代码: 请注意,我使用名为$geonear的Mongoose聚合来查找靠近指定点的位置列表

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()
替换聚合,以确保其他一切正常工作。问题自行解决。我不知道怎么做