TypeError:_firebase__WEBPACK_IMPORTED_MODULE_2__.default.collection不是函数

这是我第一次在StackOverflow上提问。我正在做一个学校项目,我是Firebase和JavaScript的初学者。我在试着做一个Tinder的克隆。Reaction告诉我这部分代码有错误。起初我有不同的错误,但它们与Firebase语法相关,我立即修复了它们,但现在我不知道这个错误是什么意思。我的代码在localhost上工作了一瞬间(我看到了我的应用程序),然后出现错误。

import React, { useEffect, useState } from 'react';
import TinderCard from 'react-tinder-card';
import database from './firebase';
import './SwipeCards.css';

...

function SwipeCards() {

...

useEffect(() => {
        database.collection('buddies').onSnapshot((snapshot) => setBuddies(snapshot.docs.map((doc) => doc.data())));
    }, []); 

...

}
对于其他人遇到的类似问题,我尝试了两种解决方案,即: (在我的tinderCards.js中)

database.firestore().collection('buddies')...

和(在我的Firebase.js中)

import { initializeApp } from 'firebase/app';
import { getFirestore } from 'firebase/firestore';

...

const firebaseApp = initializeApp(firebaseConfig);
const database = getFirestore(firebaseApp);
export default database;

但两个都不管用。如果需要,我可以发布更多的代码。如有任何帮助,我们将不胜感激。

sdk

您使用的是新的模块化推荐答案(V9),它不再使用firebase.firestore()命名空间。我建议您按照documentation了解新语法:

import database from './firebase';
import { doc, onSnapshot, collection, query, where, onSnapshot } from "firebase/firestore";

useEffect(() => {
  const q = query(collection(db, "buddies"))
  const unsub = onSnapshot(q, (querySnapshot) => {
    console.log("Data", querySnapshot.docs.map(d => doc.data()));
  });
}, [])

相关文章