Firestore:写一个新文档,然后立即返回新文档?

时间:2020-10-18 22:46:22

标签: javascript reactjs firebase google-cloud-firestore

有没有一种写法->一次性读取Firestore中新添加的文档?我一直在写,然后进行第二次查询以读取它,并且在它起作用的同时,我想知道下面是否有替代方法。我在SO上也发现了类似的问题,但其中许多问题都已过时。

const someAsyncFunc = async () => {
  try {

      const lesson = await userLessonRef.get();
      if (lesson.exists) {
        // ? if lesson exists, return it.
        return lesson.data();
      }

      // ? if lesson does NOT exist, create it.
      await firebaseFirestore
        .collection(`users/${userID}/languages/${language}/lessons`)
        .doc(lessonID)
        .set({ greetings: 'hello' });

      // ? return the newly created lesson.
      const newLesson = await firebaseFirestore
        .collection(`users/${userID}/languages/${language}/lessons`)
        .doc(lessonID)
        .get();
      return newLesson.data();

  } catch (error) {
    console.log('Error finding lesson collection', error);
  }
}

1 个答案:

答案 0 :(得分:2)

除了transaction(这是组合的先读后写操作之外,没有任何写/读组合操作。如果在写完文档后需要文档的全部内容,则必须阅读。