【问题标题】:db = firebase.database(); is not a functiondb = firebase.database();不是函数
【发布时间】:2020-05-21 23:32:55
【问题描述】:

我有问题。我想从登录的用户那里获取所有信息。这些信息包含在 Firebase 数据库中。当我使用用户数据登录时,控制台会给我以下错误消息:

subscribe.js:159 TypeError: db.collection is not a function
    at Object.next (index.js:9)

我该如何解决这个错误?

index.js

   firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.



    var db = firebase.database();
    var user = firebase.auth().currentUser;
    var docRef = db.collection("users").doc(user.uid);

    docRef.get().then(function(doc) {
    if (doc.exists) {
        console.log("Document data:", doc.data());
    } else {
        // doc.data() will be undefined in this case
        console.log("No such document!");
    }
    }).catch(function(error) {
    console.log("Error getting document:", error);
    });

    if(user != null){

      var email_id = user.email;


    }

  } else {


  }
});

index.html

       <script>
  // Your web app's Firebase configuration
  var firebaseConfig = {
    ...
  };
  // Initialize Firebase
  firebase.initializeApp(firebaseConfig);
</script>
<script src="index.js"></script>

【问题讨论】:

  • 你肯定先打电话给firebase.initializeApp? db 对象是什么样子的 - 你可以试试 console.log() 吗?
  • 感谢您的评论。请看我的编辑!使用console.log(db) 我得到:e {Ie: e, B: t, INTERNAL: e} B: t {repo: e, path: e, Ae: e, De: false} INTERNAL: e {database: e} Ie: e {H: e, app: e, dataUpdateCount: 0, G: null, K: e, …} app: (...) __proto__: Object
  • 您要使用哪个数据库?实时数据库还是 Firestore?
  • @DougStevenson 我使用 Firestore
  • 您需要使用firebase.firestore() 来获取正确的对象,而不是firebase.database()

标签: javascript html firebase


【解决方案1】:

db.collection() 不是函数,因为db 指的是实时数据库而不是 Firestore。它们是具有不同 API 的不同数据库。根据您的问题,我们无法判断您尝试使用哪个数据库。

如果您尝试使用实时数据库,则需要使用firebase.database(),然后使用child() 来构建到节点的路径:

var db = firebase.database();
var user = firebase.auth().currentUser;
var docRef = db.child("users").child(user.uid);

但如果您使用的是 Firestore,则需要以 firebase.firestore() 开头:

var db = firebase.firestore();
var user = firebase.auth().currentUser;
var docRef = db.collection("users").doc(user.uid);

【讨论】:

  • 感谢您的回答。不幸的是,当我使用 firebase.firestore() 而不是 firebase.database() 时,我得到:firebase.firestore is not a function
  • 您没有导入 firestore 脚本。请查看文档中的说明:firebase.google.com/docs/firestore/…
  • 非常感谢! :) 我用&lt;script src="https://www.gstatic.com/firebasejs/7.14.4/firebase-firestore.js"&gt;&lt;/script&gt; 添加了它,但同样的错误
  • 错误:"firebase.firestore is not a function"
  • 既然你有一个新问题,我建议发布一个新问题,描述你目前有什么,什么没用。 Stack Overflow 一次只能真正有效地处理一件事。
猜你喜欢
  • 2021-10-08
  • 2020-10-24
  • 2022-01-25
  • 2020-07-17
  • 2021-08-18
  • 2017-10-24
  • 1970-01-01
相关资源
最近更新 更多