如何将 Firestore DocumentReferences 数组映射到 DocumentData 数组?

它闪耀

我正在尝试创建一个谷歌云函数,它读取一组 Firestore 文档并执行这些文档的操作。这些文档应该被读取一次并存储在一个数组中以减少所需的读取操作。但是我无法做到正确,以便在完成阅读部分后开始对我的数组进行迭代。

export const matchUsers = functions
  .region("europe-west1")
  .pubsub
  .topic("matchUsers")
  .onPublish(async message => {
    console.log("Matching invoked...")

    await firebase.firestore().collection("matchData").listDocuments().then(docRefs => {
      const docs: admin.firestore.DocumentData[] = []

      docRefs.forEach(async docRef => {
        await docRef.get().then(snapshot => {
          const data = snapshot.data()
          if (data) {
            console.log("BPM: " + data.bpm)   # gets called
            docs.push(data)
          }
        })
      })

      console.log("Start loop")
      docs.forEach(doc => {
        console.log("BPM: " + doc.bpm)   # never gets called
      })
      console.log("Finish loop")

    })

  });

输出:

Matching invoked...
Start loop
Finish loop
BPM: 120

我希望输出是: 输出:

Matching invoked...
BPM: 120
Start loop
BPM: 120
Finish loop
安德烈斯米哈雷斯

试试这个:

export const matchUsers = functions
  .region("europe-west1")
  .pubsub
  .topic("matchUsers")
  .onPublish(async message => {
    console.log("Matching invoked...")

    await firebase.firestore().collection("matchData").get().then(docRefs => {
      const docs: admin.firestore.DocumentData[] = []

      docRefs.forEach(docRef => {
        const data = docRef.data()
        console.log("BPM: " + data.bpm)   # gets called
        docs.push(data)
      })

      console.log("Start loop")
      docs.forEach(doc => {
        console.log("BPM: " + doc.bpm)
      })
      console.log("Finish loop")
    })

  });

看起来您正在将异步与同步操作混合在一起,并且它没有按照您期望的方式工作,get()对于这种情况足够了。

最后,如果您的收藏量很大,请注意超时。

祝你好运

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularFire-如何将Firestore文档映射到valueChanges上的数组?

来自分类Dev

如何将数组映射到哈希

来自分类Dev

如何将Python数组映射到NumPy数组

来自分类Dev

将SwiftyJSON映射到数组

来自分类Dev

将数组部分映射到新数组

来自分类Dev

将索引数组映射到坐标数组

来自分类Dev

将键数组映射到值数组

来自分类Dev

将数组映射到数组内部

来自分类Dev

将数组映射到对象数组

来自分类Dev

将数组映射到新数组

来自分类Dev

如何将Xml数组的值映射到csv字段

来自分类Dev

如何将数组映射到HTML网格?

来自分类Dev

如何将异构JSON数组映射到Java对象?

来自分类Dev

如何将反应形式字段映射到线性数组?

来自分类Dev

如何将数组索引映射到子集索引?

来自分类Dev

如何将数组或对象映射到对象?

来自分类Dev

如何将数组元素映射到输入?

来自分类Dev

如何将对象数组映射到Q Promise数组

来自分类Dev

如何将对象数组映射到Q Promise数组

来自分类Dev

将具有数组的数组映射到数组

来自分类Dev

Ruby:将字符串数组映射到数组数组

来自分类Dev

将哈希数组反向映射到哈希

来自分类Dev

自动将数组映射到列表

来自分类Dev

将数组索引映射到矩阵

来自分类Dev

将php数组映射到嵌套的json

来自分类Dev

将数组映射到int Java

来自分类Dev

将表单提交映射到数组

来自分类Dev

将数组索引映射到矩阵

来自分类Dev

将位置映射到数组索引