簡體   English   中英

React Native w/ firebase “未定義不是對象”

[英]React Native w/ firebase “undefined is not an object”

收到此錯誤:

TypeError: undefined is not an object (evaluating 'doc.data().books')

從此代碼:

    const getData = () => {
        const snapshot = db.collection('users').doc(userEmail).onSnapshot((doc) => {
            setData(doc.data().books)
        })

    }

    useEffect(() => {
        getData()
    }, [])
 

這是 firestore 數據庫,試圖訪問更新的 boo 集合(顯示在平面列表中,當新內容添加到集合時需要更新)請注意,屏幕外有一個 users 集合。

在此處輸入圖像描述 我很確定這是我在快照上做錯了,但我真的不確定是什么,非常感謝所有幫助:)

該錯誤告訴您doc.data()返回未定義,這意味着您請求的文檔不存在。 您可能為userEmail傳遞了一個與您預期不同的值。 由於您沒有顯示價值,我們不確定出了什么問題。

我將指出文檔 ID 必須完全匹配,因此如果 email 地址不完全是帶有大寫 E 的“Email@email.com”,則查詢將不會使用您在此處顯示的內容返回文檔。

有幾種可能性。 但是,db 沒有在 getData function 的 scope 中定義......它在哪里定義?

如果我正確理解您的問題,您想獲取用戶文檔的books (或boo ?)子集合中的文檔,其 id 對應於userEmail

如果這個假設是正確的,您應該執行以下操作:

const getData = () => {
    db.collection('users').doc(userEmail).collection('books')
       .onSnapshot(querySnapshot => {
           var books = [];
           querySnapshot.forEach(doc => {
               books.push(doc.data());
           });
           // Here you have an array of all the book objects.
           // It's up to you to use it as you wish with your setData() function
       });

}

請注意,使用doc.data().books您實際上是在嘗試獲取用戶文檔的books字段。

暫無
暫無

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

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