javascript - Firebase 添加内部 for 循环

标签 javascript firebase google-cloud-firestore

我正在运行 Firebase add在 map 内。问题是我需要返回新添加文档的引用,但看起来它会进入 .then 之前的下一个迭代当前迭代的运行。我尝试过 await但我无法让它正常工作。

  taskContexts = taskContexts.map(taskContext => {
    const found = contexts.find(el => el.name === taskContext);
    // If context exists, return reference
    if (found) {
      return this.props.firebase.db.doc("/contexts/" + found.uid);
    } else {
      // If it doesn't, create new context
      // The add works, but it looks like the .then is only ran after the iteration has finished
      this.props.firebase.contexts().add({
        created: this.props.firebase.fieldValue.serverTimestamp(),
        name: taskContext,
      })
      // Then return reference
      .then((response) => {
        console.log("New context added with id:");
        console.log(response.id);
        return this.props.firebase.db.doc("/contexts/" + response.id);
      })
      .catch(function(error) {
        console.error("Error adding new context: ", error);
      });
    }
  });

最佳答案

看看Promise.all(),它会给出所有响应的数组,从那里,您的问题将很容易得到解决。

了解更多Take a look ,欢迎您的评论。

我没有足够的声誉来发表评论

关于javascript - Firebase 添加内部 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59061228/

相关文章:

javascript - 显示 :none defaulting width 的 HTML 元素

ios - Firebase 云消息传递不创建推送通知但获取信息

angular - Firestore 上不区分大小写的查询

firebase - 在 iOS 上注销和登录 firebase 身份验证后,Firestore 调用 setData 将不会进入完成 block

ios - 无法获取子集合数据

java - Firestore-查询子集合

javascript - 与 toString(36) 相反?

javascript - 弹跳图像帮助代码无法在 jsfiddle 外部工作

firebase - 我可以在自己的后端使用 Admin SDK 创建触发器吗?

javascript - 通过ajax获取html文件,并在目标html中使用data参数