【问题标题】:Get Latitude and Longitude data from all Firebase documents从所有 Firebase 文档中获取纬度和经度数据
【发布时间】:2020-10-05 14:29:52
【问题描述】:

如何从 firebase 的集合中获取所有文档的纬度和经度数据

文档名是用户的uid;

我在想我需要进行查询以获取我需要的数据。

我该怎么做?

我正在尝试这样的事情:

火力基地结构:

collection:
  Providers
    docs:
      23ejb32be32e32 - (uid)
        data:
          address: {
            latitude: -23.322,
            longitude: -22.222
          }
async function getProviderLocation() {
      try {
        const db = firebase.firestore();

        db.collection('Providers')
          .where('latitude', 'array-contains', 'latitude')
          .get()
          .then(snapshot => {
            if (snapshot.empty) {
              console.log('nao tem');
              return;
            }

            snapshot.forEach(doc => {
              console.log(doc.id, '=>', doc.data());
            });
          })
          .catch(err => {
            console.log('Error getting documents', err);
          });

        const document = await db
          .collection('Providers')
          .doc('lVXWjScexiuNlZaXAon4')
          .get();

        if (document.exists) {
          setPoints([
            ...points,
            {
              latitude: document.data().address.latitude,
              longitude: document.data().address.longitude,
            },
          ]);
        } else {
          console.log('doc não existe');
        }

谁能帮帮我???

【问题讨论】:

  • 您共享的代码中的哪一行没有按照您的预期执行?
  • @FrankvanPuffelen 我需要从集合(提供者)的文档中获取数据,但文档的名称是用户的 uid。我该怎么做?
  • 如果没有看到文档中的实际数据,也没有确切地知道你想从中得到什么,很难说你应该做什么。请编辑问题以显示您正在使用的数据。
  • @DougStevenson 我用我的火力基地的一个小结构更新了我的问题,告诉我这是否足够
  • @DougStevenson 我也添加了结构的图像,纬度和经度将在地址内

标签: javascript firebase google-cloud-firestore


【解决方案1】:

您的查询与屏幕截图中的文档结构不匹配。由于没有名为latitude 的数组字段,因此查询不返回任何文档。

您的屏幕截图显示了一个包含 address 字段的文档,该字段是一个地图。 address 映射/字段具有 longitudelatitude 的子字段。

要打印所有 map.longitudemap.latitude 值,您可以:

db.collection('Providers')
  .get()
  .then(snapshot => {
    if (snapshot.empty) {
      console.log('nao tem');
      return;
    }

    snapshot.forEach(doc => {
      console.log(doc.id, '=>', doc.data().address.longitude+" - "+doc.data().address.latitude);
    });
  })
  .catch(err => {
    console.log('Error getting documents', err);
  });

【讨论】:

    猜你喜欢
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多