firebase.database.ref不是函数错误

时间:2019-04-09 18:22:14

标签: javascript firebase firebase-realtime-database

我正在尝试从数据库读取/写入数据,但是我总是会收到此错误:

  

firebase.database.ref不是函数错误

这是我将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身份验证正常工作。但是当我这样做时:

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);
    });

}

我在上面遇到错误。我在做什么错了?

4 个答案:

答案 0 :(得分:2)

我还发现最新的Firebase库没有发现数据库功能问题。研究了发现的内容之后,这是由于我要为数据库导入Javascript

以前,我使用的是以下脚本,该脚本无法正常工作:

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

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

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

希望这对其他人有帮助。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

如果您要将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 (
   ...
   )
}

答案 3 :(得分:0)

我遇到了同样的问题。我刚刚添加了这个 CDN

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