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