Home > OS >  JS Firebase Database Error db.ref is not a function
JS Firebase Database Error db.ref is not a function

Time:06-14

Hi I am trying to implement firebase realtime database API in my website, I am following this documentation: enter image description here

this is my code:

 <script type="module">
    // Import the functions you need from the SDKs you need
    import { initializeApp } from "https://www.gstatic.com/firebasejs/9.8.3/firebase-app.js";
    import { getAnalytics } from "https://www.gstatic.com/firebasejs/9.8.3/firebase-analytics.js";
    import { getDatabase } from "https://www.gstatic.com/firebasejs/9.8.3/firebase-database.js";;

    // TODO: Add SDKs for Firebase products that you want to use
    // https://firebase.google.com/docs/web/setup#available-libraries

    // Your web app's Firebase configuration
    // For Firebase JS SDK v7.20.0 and later, measurementId is optional
    const firebaseConfig = {
      apiKey: "xxxxxxxxxxxxxxxxxxxxx",
      authDomain: "xx.x.xxx",
      databaseURL: "xxxxxxxxxxxxxxxx",
      projectId: "xxxxx",
      storageBucket: "xxxxxxxxx",
      messagingSenderId: "xxxx",
      appId: "xxxxx",
      measurementId: "xxxxxxx"
    };

    const fireapp = initializeApp(firebaseConfig);
    const db = getDatabase(fireapp);
    const ref = db.ref('server/saving-data/fireblog');
  </script>

What am I doing wrong? Could the version I am using be incorrect?

CodePudding user response:

You're mixing the new modular/v9 syntax of the API with the older namespaced syntax, and that won't work.

In v9 the equivalent of that last line is:

const ref = ref(db, 'server/saving-data/fireblog');

Since you seem to be taking outdated code, I recommend keeping the documentation handy (for example, this section on getting a reference) to compare the v8 and v9 code samples, as well as reading the upgrade guide.

CodePudding user response:

it seems like you're using the documentation for the NodeJS backend SDK. Your starting point for frontend developing should be firebase docs – web start.

For v9 of the Web-SDK, that you included into your website, there different functions to use. Check out firebase docs – web read/write for using them.

I was confused as well when I first used firebase for web developing some weeks ago. I hope it helps.

CodePudding user response:

You are using the Firebase Client SDK but referring to the documentation of Firebase Admin SDK that is not totally modular yet. Try refactoring the code using ref() function:

import { ref } from "firebase/database"

const dbRef = ref(db, 'server/saving-data/fireblog');

Checkout the documentation of Firebase JS SDK (the Modular tab) for correct syntax.

  • Related