开发者问题收集

JS Firebase 数据库错误 db.ref 不是一个函数

2022-06-13
5387

嗨,我正在尝试在我的网站中实现 firebase 实时数据库 API,我正在遵循以下文档: https://firebase.google.com/docs/database/admin/save-data#node.js ,但我收到此错误:

enter image description here

这是我的代码:

 <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>

我做错了什么?我使用的版本可能不正确吗?

3个回答

您正在将 API 的新模块化/v9 语法与旧的命名空间语法混合使用,这是行不通的。

在 v9 中,最后一行的等效内容是:

将“ ref ”添加到 firebase/databaseimport 中:

import { getDatabase, ref } 
  from "<wherever you are getting firebase/database from>";

并替换最后一行:

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

由于您似乎在使用过时的代码,我建议您随时查阅文档(例如,有关 获取引用 的部分)以比较 v8 和 v9 代码示例,以及阅读 升级指南

Frank van Puffelen
2022-06-13

您正在使用 Firebase Client SDK ,但引用的 Firebase Admin SDK 文档尚未完全模块化。请尝试使用 ref() 函数重构代码:

import { ref } from "firebase/database"

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

查看 Firebase JS SDK 文档( Modular 标签)了解正确的语法。

Dharmaraj
2022-06-13

看起来您正在使用 NodeJS 后端 SDK 的文档。前端开发的起点应该是 firebase docs – web start

对于您包含在网站中的 Web-SDK v9,有不同的功能可供使用。查看 firebase docs – web read/write 以了解如何使用它们。

几周前,当我第一次使用 firebase 进行网络开发时,我也感到很困惑。希望对您有所帮助。

Torben
2022-06-13