代码之家  ›  专栏  ›  技术社区  ›  castlenibill

Firebase无法从数据库“db.collection不是函数”检索数据

  •  9
  • castlenibill  · 技术社区  · 6 年前

    无法从firebase数据库中获取任何内容。显示以下错误:

    Uncaught TypeError: db.collection is not a function

    我在此处设置了脚本,如图所示:

    var config = {
      apiKey: "*****",
      authDomain: "*****",
      databaseURL: "*****",
      projectId: "*****",
      storageBucket: "*****",
      messagingSenderId: "*****"
    };
    firebase.initializeApp(config);
    const db = firebase.database();
    
    const firstName = document.querySelector('#firstName').value;
    const mainButton = document.querySelector('#mainButton');
    
    mainButton.addEventListener('click', () => {
      db.collection("users").doc().set({
          first: firstName,
      })
      .then(function() {
          console.log("Document successfully written!");
      })
      .catch(function(error) {
          console.error("Error writing document: ", error);
      });
    });
    <input id="firstName" type="text" name="first-name" required>
    <button id="mainButton" type="button">Submit</button>

    我错过了什么?

    2 回复  |  直到 6 年前
        1
  •  33
  •   Peter Haddad    6 年前

    更改此项:

    const db = firebase.database();
    

    对此:

    const db = firebase.firestore();
    

    因为您使用的是firestore,而不是实时数据库。

    更多信息请点击此处:

    https://firebase.google.com/docs/firestore/quickstart#initialize

        2
  •  0
  •   Peter Csala Will Young    2 年前
    import { doc, setDoc } from 'firebase/firestore';
    
    const userRef = doc(db, "users");
    setDoc(userRef, {
                    first: firstName,
                });
    

    顺便说一下:

    const paymentRef = doc(db, collection, user?.uid, "subcollection", paymentIntent.id);
                setDoc(paymentRef, {
                    basket: basket,
                    amount: paymentIntent.amount,
                    created:    paymentIntent.created
                });
    

    这就是您可以引用文档并设置或创建的方式。如果不存在,firebase将创建。。。