【问题标题】:firebase.getDatabase()).ref() is not a functionfirebase.getDatabase()).ref() 不是函数
【发布时间】:2021-12-30 11:01:09
【问题描述】:

您好,我正在 nodeJS 上做一个项目 shcool,并与 firebase 合作。 我尝试让usersname 不重写现有值。 数据库是:

我的代码尝试一下:

serv.js

const firebaseConfig = {
  apiKey: process.env.REACT_APP_API_KEY,
  authDomain: process.env.REACT_APP_AUTHDOMAIN,
  databaseURL: process.env.REACT_APP_DATABASEURL,
  projectId: process.env.REACT_APP_PROJECTID,
  storageBucket: process.env.REACT_APP_STORAGEBUCKET,
  messagingSenderId: process.env.REACT_APP_MESSASGINGSENDERID,
  appId: process.env.REACT_APP_APPID,
  measurementId: process.env.REACT_APP_MEASUREMENTID
};

const {initializeApp} = require('firebase/app');
const {getDatabase} = require('firebase/database');
const {getAuth, signInWithEmailAndPassword, createUserWithEmailAndPassword} = require('firebase/auth');

const fireapp = initializeApp(firebaseConfig);
const db = getDatabase(fireapp);
var firebaseauth = getAuth(fireapp);
[...]

function create_entry_name(name, email)
{
  const ref = db.ref('/users/' + name);

  ref.on('value', (snapshot) => {
    console.log(snapshot.val());
  }, (errorObject) => {
    console.log('The read failed: ' + errorObject.name);
  });
}

这就是 firebase 网站上的例子。

但我得到一个错误女巫是:

db.ref is not a function

如果您对此问题有解决方案,我将非常感谢...

【问题讨论】:

  • 您确定您是否正确初始化/声明db?尝试控制台记录它,看看它是否符合您的预期。
  • 老实说,我真的不知道我希望从 db 得到什么,我安慰他记录下来,但这并没有给我任何线索...... @insyri
  • ooof 这里有很多错误。在此处关注文档firebase.google.com/docs/database/web/start
  • 你好,所以我用 firebase tuto 和你的帮助更新了我的代码,但我得到了完全相同的错误......@BrianMcCall

标签: javascript node.js firebase


【解决方案1】:

您正在使用模块化 SDK (v9.0.0+),但使用的是旧名称空间语法的语法。尝试重构代码如下:

import { getDatabase, ref, onValue} from "firebase/database";

function create_entry_name(name, email) {
  const ref = ref(db, '/users/' + name);

  onValue(ref, (snapshot) => {
    const data = snapshot.val();
    console.log(data)
  });
}

您可以在documentation 中找到有关新语法的更多详细信息。

【讨论】:

    【解决方案2】:

    从应用程序库构建应用程序...

    import { firebaseApp } from 'firebase/app';
    const app = initializeApp({/*config*/});
    

    然后从初始化的应用程序中获取数据库。请注意,OP 无法将参数传递给 getDatabase...

    const db = getDatabase(app);
    
    const ref = db.ref('users/' + name);
    // etc...
    

    【讨论】:

    • 你好,所以我用 firebase tuto 和你的帮助更新了我的代码,但我得到了完全相同的错误...@danh
    【解决方案3】:

    直接调用getDatabase。它已经初始化了。

    const db = getDatabase();
    const ref = db.ref('/users/'+ name);
    

    【讨论】:

    • 代码更新和同样的错误
    猜你喜欢
    • 2020-04-06
    • 2018-09-28
    • 2021-12-26
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    相关资源
    最近更新 更多