![](/img/trans.png)
[英]TypeError: snapshot.forEach is not a function - Loop through firebase database
[英]Firebase Cloud Functions: TypeError snapshot.forEach is not a function
我一直在努力理解為什么我的 Firebase 雲 function 不工作。
當新用戶注冊並創建該用戶的文檔時,我將刪除名為“anglerNumbers”的集合中的保留號碼。 我在客戶端使用它來確保保留號碼不能被使用兩次。 我在這里關注文檔: https://firebase.google.com/docs/firestore/query-data/queries?authuser=0 (使用 Node.js)
但我不斷收到錯誤: TypeError: snapshot.forEach is not a function
這是 function:
exports.newUser = functions.firestore.document('users/{userId}')
.onCreate((snap, context) => {
const newUserNumber = snap.data().anglerNumber;
const anglersRef = admin.firestore().collection('anglerNumbers');
const snapshot = anglersRef.where('anglerNumber', '==', newUserNumber).get();
if (snapshot.empty) {
console.log('No matching documents.');
return;
}
snapshot.forEach(doc => {
console.log(doc.id, '=>', doc.data());
doc.delete();
});
})
它不會控制台記錄“沒有匹配的文檔”。 所以有文檔,但我無法按照文檔指示執行 forEach。 我錯過了什么? 謝謝!
在您的代碼的這一行中:
const snapshot = anglersRef.where('anglerNumber', '==', newUserNumber).get();
您假設 get 立即解析為快照,但實際上 get() 返回一個 promise,它將解析為快照。 您需要等待此異步 function。
如果在您的上下文中可能,請使用 await 或使用:
anglersRef.where('anglerNumber', '==', newUserNumber).get().then((snapshot)=>{
//do you processing
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.