Firebase.database.ref не является ошибкой функции

Я пытаюсь читать/записывать данные из своей базы данных, но всегда получаю эту ошибку:

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

}

Я получаю ошибку выше. Что я делаю неправильно?

Это var ref = firebase.database().ref();

Chris G 09.04.2019 20:26

@ChrisG О, чувак, какая глупая ошибка :(... Большое спасибо! Теперь это работает.

Whirlwind 09.04.2019 20:29

У меня была аналогичная проблема, я решил ее, но уменьшив версию 7.6.1 -> 5.9.3

HeyTech 31.12.2019 13:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
7
3
8 898
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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>

Другие вопросы по теме