[英]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.