开发者问题收集

firebase.getDatabase()).ref() 不是一个函数

2021-11-19
2877

您好,我正在 nodeJS 上做一个项目,并使用 firebase。 我尝试获取 usersname 以不重写现有值。 数据库是:

the db

我的代码尝试一些东西:

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

如果您有此问题的解决方案,我将不胜感激...

3个回答

您正在使用模块化 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)
  });
}

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

Dharmaraj
2021-11-20

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

const db = getDatabase();
const ref = db.ref('/users/'+ name);
Patrick Kelly
2021-11-19

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

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

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

const db = getDatabase(app);

const ref = db.ref('users/' + name);
// etc...
danh
2021-11-19