【发布时间】:2021-12-28 14:27:41
【问题描述】:
我正在关注本教程https://www.sitepoint.com/reddit-clone-react-firebase/。
之前很简单,只是在获取文档后调用 onSnapshot,但这里它是一个单独的函数,现在问题来了,当我尝试通过传递文档来调用 onSnapshot 时,它总是说,不管我试图将什么类型的数据作为第一个参数传递,它总是说,它不是它所期望的“bc”类型。
FirebaseError:预期类型为“bc”,但它是:自定义 he 对象
useEffect(async () => {
const postsCollection = collection(db, "posts");
const orderedCollection = query(
postsCollection,
orderBy("createdAt", "desc")
);
try {
onSnapshot(
orderedCollection, // here I think the problem is!
(querySnapshot) => {
console.log("yahaan se problem hai");
console.log(querySnapshot);
const _posts = [];
querySnapshot.forEach((doc) => {
console.log(doc);
_posts.push({
id: doc.id,
...doc.data(),
});
});
console.log(_posts);
// setPosts(_posts);
},
(error) => {
console.log("error occured: ", error);
},
() => {
console.log("completed");
}
);
} catch (e) {
console.log("ye kya drama hai:", e);
} finally {
console.log("finally");
}
}, []);
【问题讨论】:
-
您是否尝试过参考教程中的确切示例?我相信做
db.collection("posts").orderBy("createdAt", "desc").onSnapshot((querySnapshot) =>应该有效。你也可以看到这个Firebase documentation。 -
不,因为本教程使用的是旧版本的 firebase,所以,我使用的是较新/最新的版本,而最新版本有不同的方法,这就是造成问题的原因.
-
您的 Firebase 版本是多少?我相信这个SO 线程的答案可能会有所帮助。
-
我正在使用“firebase”:“^9.6.1”,我尝试了该线程中提到的代码,但我仍然遇到同样的错误,但这次它说“自定义他对象”而不是“自定义文件对象”
标签: javascript reactjs firebase google-cloud-firestore