首页 > 解决方案 > 如何 console.log() 通过 mongoose 存储在 mongoDB 中的经度和纬度

问题描述

我想从这里获取 lng lat。

**

router.get("/", function(req, res) {
  Map.find({}, function(err, doc) {
    if (err) {
      res.send(500, {
        error: err
      });
    }
    res.send(doc);
    doc.map((item,i)=>(
      console.log(item._id),
      console.log(JSON.stringify(item.data)),
      console.log(item.__v)
      ));

  });
});

**

但是在这里我得到了 id 和 __v 的值,而不是数据项的值。我也尝试过不使用 JSON.strigify(),但又失败了。

标签: node.jsmongodbmongoose

解决方案


如果我理解您的问题,那么您正确地获得了._idand.__v属性的值,但是您想要lngand lat。这些属性隐藏在两个嵌套数组中。

你有这个:

doc.map((item,i)=>(
  console.log(item._id),
  // console.log(JSON.stringify(item.data)),
  console.log(item.__v)
));

你说的确实得到了item._iditem.__v适当的。如果是这种情况,那么您必须到达data阵列内部。例如,您在此屏幕截图中显示的第一个 lng,lat:

在此处输入图像描述

将会:

doc.forEach(item => {
  console.log(item._id),
  console.log(item.__v)
  console.log(item.data[0].paths[0].lng);
  console.log(item.data[0].paths[0].lat);
});

要查看这些数组中的所有值,您必须迭代两个嵌套数组。

doc.forEach(item => {
  console.log(item._id),
  console.log(item.__v)
  item.data.forEach(obj => {
      obj.paths.forEach(data => {
          console.log(data.lat, data.lng);
      });
  });
});

推荐阅读