Firebase 给出的 db.collection 不是一个函数
2020-10-09
74
我正在按照 YouTube 上的教程操作,并成功创建了 Firebase 项目和 Firestore 数据库。我创建了一个演示集合,我想从中提取数据,但这样做之后,我收到了此错误:
TypeError: db.collection(...).onShapshot is not a function
这真的很奇怪,因为我正在按照教程操作,而且在教程中没有任何问题,即使它在我的 PC 上返回了问题。我将分享完整的代码,希望有人能够帮助我解决它。
import React, { useState, useEffect } from "react";
import { Header, Post } from "./components";
import firebase from "firebase";
import "./App.css";
const firebaseApp = firebase.initializeApp({
apiKey: "XXXX",
authDomain: "instagram-clone-2ee86.firebaseapp.com",
databaseURL: "https://instagram-clone-2ee86.firebaseio.com",
projectId: "instagram-clone-2ee86",
storageBucket: "instagram-clone-2ee86.appspot.com",
messagingSenderId: "222065421214",
appId: "1:222065421214:web:0206210d4eb74d7925c48f",
measurementId: "G-G37J67K1FW",
});
function App() {
const db = firebaseApp.firestore();
const [posts, setPosts] = useState([]);
// useEffect => Runs a piece of code based on a specific condition
useEffect(() => {
db.collection("posts").onShapshot((snapshot) => {
setPosts(snapshot.docs.map((doc) => doc.data()));
});
}, []);
return (
<div className="app">
<Header />
<div className="app__posts">
{posts.map((post) => (
<Post
username={post.username}
caption={post.caption}
imageUrl={post.imageUrl}
/>
))}
</div>
</div>
);
}
export default App;
这是我收到的错误: https://i.sstatic.net/iwWdf.png
任何帮助都将意义重大,因为我整天都被这个问题困扰。谢谢!祝一切顺利!
2个回答
您输入的是“onShapshot”,但应该是“onSnapshot”。请检查拼写。
Doug Stevenson
2020-10-10
真正的函数名称是
onSnapshot
useEffect(() => {
db.collection("posts").onSnapshot((snapshot) => {
setPosts(snapshot.docs.map((doc) => doc.data()));
});
}, []);
Diego Rojas
2020-10-10