簡體   English   中英

Firebase 雲函數:TypeError snapshot.forEach 不是 function

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

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