Firestore查询有时不包含更新的数据

时间:2020-07-15 23:54:54

标签: node.js firebase google-cloud-firestore firebase-admin

我正在使用Firestore的节点sdk。在我的代码中,我调用function1,该函数将更新firestore中的表。当该函数结束时,我调用function2,该函数运行查询以获取表的引用。大约有80%的时间可以工作,但是有时我所需的数据(在function1中添加到文档中的数据)不会返回快照中,因此会引发错误。

我在更新之前添加了一个await关键字,但这似乎没有使代码等待Firestore更新完成。

我想我也可以返回要在function1中更新的数据,然后将其传递给function2,但这有点怪诞,尽管我想我可以省点钱,因为我不必买1记录下来。我也可以使它成为一个大功能,但是那会使它成为100行的功能。

这是我的代码的缩写版本:

const function1 = async (tableId) => {
      const firestore = admin.firestore();
      const tableSnapshot = await firestore.collection('tables').doc(tableId).get();
      await tableSnapshot.ref.update({ smallBlind: {seat: 1, amount: 5000} }) // the seat number and amount number wont always be 1 and 5000. Otherwise I wouldn't need to look it up in function2
}

const function2 = async (tableId) => {
      const firestore = admin.firestore();
      const tableSnapshot = await firestore.collection('tables').doc(tableId).get();
      const tableData = tableSnapshot.data();
      const smallBlind = tableSnapshot.data().smallBlind; // the smallBlind data is not there. so smallBlind is undefined
}

const startStuff = async () => {
   await function1(42); // example tableId is passed in
   await function2(42);
}
startStuff()

1 个答案:

答案 0 :(得分:1)

上面的代码没有异步问题。我在代码的另一部分遇到了另一个异步问题,这导致了我的问题。