javascript - Firebase - Vue 数据库集成不起作用

标签 javascript firebase vue.js firebase-realtime-database vuejs3

我正在尝试将 Firebase 与 Vue 4 应用程序集成,目前出现以下错误。

Uncaught TypeError: db__WEBPACK_IMPORTED_MODULE_1_.default.database is not a function


我在用
“火力基地”:“^9.0.0”
“vue”:“^3.0.0”

import { initializeApp } from "firebase/app";
import { getDatabase } from "firebase/database";


const firebaseConfig = {
// keys
};

const app = initializeApp(firebaseConfig);

const db = getDatabase(app);

export {db}

我的函数调用如下

import {reactive} from 'vue';
import { ref, set, push } from "firebase/database";
import {db} from "./db"


export default {
  setup(){
    const inputUsername = ref("");
    const inputMessage = ref("");
    const state = reactive({
        username: "",
        messages:[]
    });

    const Login = () =>{
      if(inputUsername.value != "" || inputUsername.value != null){
       state.username = inputUsername.value;
       inputUsername.value = "";
      }
    }
    const SendMessage = () => {
    //   const messagesRef = db.database().ref("messages");
      if (inputMessage.value === "" || inputMessage.value === null) {
        return;
      }
      const message = {
        username: state.username,
        content: inputMessage.value
      }
      set(push(ref(db, 'messages')), message);

    //   messagesRef.push(message);
      inputMessage.value = "";
    }
    return{
    inputUsername,
    Login,
    state,
    inputMessage,
    SendMessage
    }
  }
}

我尝试了以下 the following suggestion 但它没有用。
谢谢!

最佳答案

新的模块化 SDK 不再使用命名空间。所以你不能使用app.database() .您可以简单地从初始化 Firebase 的文件中导出数据库实例,如下所示:

import { initializeApp } from "firebase/app";
import { getDatabase } from "firebase/database";

const app = initializeApp(firebaseConfig);

const db = getDatabase(app);

export {db}
然后在需要的地方导入并使用它:
import { ref, child, get } from "firebase/database";
import {db} from "../path/to/firebase.js"

const message = {
  username: state.username,
  content: inputMessage.value
}

set(push(ref(db, 'messages')), message);
您可以在 documentation 中了解有关新语法的更多信息。

Uncaught TypeError: db._checkNotDeleted is not a function


此错误是由于您正在导入 ref来自firebasevue .请导入 Firebase 的 reffireRef .
import { reactive, ref } from "vue";
import { ref as fireRef, set, push } from "firebase/database";
import { db } from "./db";

// usage 
set(push(fireRef(db, "messages")), message);

关于javascript - Firebase - Vue 数据库集成不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68997481/

相关文章:

firebase - 缓慢且不可靠的 Firebase Cloud Functions

javascript - 如何使用javascript删除firestore上的所有文档

javascript - 使用 this.$root.$emit 调用事件总线

javascript - D3 投影未设置 cx 属性

javascript - 不同高度的下拉菜单 : setting height to auto breaks the rolldown

javascript - http 绑定(bind)在 Angular2 中实际用途是什么

javascript - 带有单选框的 ng-repeat 表的键盘控制

ios - Geofire查询距离的精度是多少?

javascript - Vue - 组件 Prop 无法正确观察对象变化

vue.js - 我可以在 getter 函数中调度 vuex 操作吗?