开发者问题收集

firebase.database.ref不是函数错误

2019-04-09
11311

我尝试从我的数据库读取/写入数据,但总是出现此错误:

firebase.database.ref is not a function error

以下是我将 Firebase 包含到项目中的方法:

<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-database.js"></script>

然后:

<script>
var config = {
    ...
};

firebase.initializeApp(config);
</script>

Firebase Auth 工作正常。但是当我执行此操作时:

function insertUser(user,name) {


     var ref = firebase.database.ref();

        ref.collection("users").doc(user.uid).set({
         uid: user.uid,
         email: user.email,
         name: name

         })
    .then(function() {
      console.log("Document successfully written!");
    })
    .catch(function(error) {
        console.error("Error writing document: ", error);
    });

}

我出现上述错误。我做错了什么?

3个回答

database() 是一种方法,因此将其更改为以下内容:

 var reference =  firebase.database().ref();

最好不要有相同的变量和方法名称。

Peter Haddad
2019-04-09

我也遇到了使用最新 firebase 库时找不到数据库函数的问题。经过研究,我发现这是由于我为数据库导入的 Javascript 造成的:

之前我使用以下脚本,但不起作用:

<script src="https://www.gstatic.com/firebasejs/7.16.0/firebase-app.js"></script>

从脚本 URL 中删除 -app 后,它开始工作:

<script src="https://www.gstatic.com/firebasejs/7.16.0/firebase.js"></script>

希望这对其他人有帮助。

bharatpatel
2020-07-15

如果您要将 firestore(数据库)模块导入某个 React 组件,请确保在主 firebase 文件中导入 "firebase/database" 并导出 export const firestore = app.database()

Firebase.tsx

import firebase from "firebase/app"
import "firebase/auth"
import "firebase/database"

const app = firebase.initializeApp({
  apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
  authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
  databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,
  projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
  storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
  appId: process.env.REACT_APP_FIREBASE_APP_ID
})

export const firestore = app.database()
export const auth = app.auth()
export default app

myComponent.tsx

import React from "react";
import {firestore} from '../../../Firebase'

export default function Home() {

  const db = firestore.refFromURL("https://<project>.firebaseio.com")
  return (
   ...
   )
}
Filip Vrlák
2020-11-07