Я пытаюсь читать/записывать данные из своей базы данных, но всегда получаю эту ошибку:
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 работает правильно. Но когда я делаю это:
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.info("Document successfully written!");
})
.catch(function(error) {
console.error("Error writing document: ", error);
});
}
Я получаю ошибку выше. Что я делаю неправильно?
@ChrisG О, чувак, какая глупая ошибка :(... Большое спасибо! Теперь это работает.
У меня была аналогичная проблема, я решил ее, но уменьшив версию 7.6.1 -> 5.9.3
database()
— это метод, поэтому измените его на следующее:
var reference = firebase.database().ref();
Также лучше не иметь одинакового имени переменной и метода.
Я также получаю, что функция базы данных не обнаружила проблему с последней библиотекой firebase. Изучив то, что я обнаружил, это связано с тем, что я импортирую Javascript для базы данных:
Раньше я использовал скрипт ниже, который не работал:
<script src = "https://www.gstatic.com/firebasejs/7.16.0/firebase-app.js"></script>
После удаления -app из URL-адреса скрипта он начинает работать:
<script src = "https://www.gstatic.com/firebasejs/7.16.0/firebase.js"></script>
Надеюсь, это будет полезно для других.
Если вы импортируете модуль firestore (базы данных) в какой-либо компонент React, убедитесь, что вы импортируете "firebase/database"
и экспортируете export const firestore = app.database()
в основной файл firebase.
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 (
...
)
}
Я столкнулся с той же проблемой. Я только что добавил этот CDN
<script src = "https://www.gstatic.com/firebasejs/8.0.1/firebase-database.js"></script>
Это
var ref = firebase.database().ref();