簡體   English   中英

Firebase 雲 function runTransaction() 不返回任何內容 v8

[英]Firebase cloud function runTransaction() not returning anything v8

所以我一直在寫一個雲 function ,每當有一個新的 Firestore 條目時,它都會充當一個計數器。 每次它都會觸發並存儲為計數器。 這樣做是為了讓我可以檢索數據以進行分頁。

const db = admin.firestore();
const europe = functions.region('..');

exports.entriesContentFormFieldCount = europe.firestore
  .document(`../{..}/../{..}/../{entryId}`)
  .onCreate(async (snapshot, context) => {
    try {
      return await db.runTransaction(async transaction => {
        const metaRef = db.doc('../{..}/../{..}/../count');
        const metaData = (await transaction.get(metaRef)).data();

        const number = metaData.count + 1;

        transaction.update(metaRef, {
          count: number
        });
        const contentFieldRef = snapshot.ref;
        transaction.set(
          contentFieldRef,
          {
            number
          },
          { merge: true }
        );
      });
    } catch (err) {
      console.log(err, 'there is an error');
      return null;
    }
  });

我在metaData.count上收到未定義的類型錯誤,這很可能意味着我的 promise 沒有返回任何內容。

我已經被這個問題困擾了好幾天,所以這就像最后的手段。 有什么知道我在這里可能出錯的地方嗎?

由於您正在閱讀的文檔可能不存在,因此您不能對其字段調用metaData.count (因為這些字段也不存在)。

我的猜測是你想指定一個默認值:

const number = (metadata ? metaData.count : 0) + 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM