【问题标题】:firebase.database.ref is not a function React Native / Expofirebase.database.ref 不是 React Native / Expo 的函数
【发布时间】:2022-01-04 00:44:01
【问题描述】:

我对 expo 和 firebase 还很陌生,我有这个错误,我不知道问题是什么。我正在尝试从 firebase 数据库中获取照片。我确定问题不在于 firebase 配置,因为我可以将照片上传到 firebase 存储中。

我怀疑问题出在导出和导入 firebase。

这是我收到的错误消息:

[TypeError: _firebase.db.ref 不是函数。 (在 '_firebase.db.ref('users/photos')', '_firebase.db.ref' 未定义)]

注意:我使用的是 firebase v9

App.js 文件:

import { db } from './firebase';

export default function App() {

  async function loadPhotos() {
    try {
      db.ref('users/photos')
        .then(url => {
          console.log('URL: ', url);
        })
        .catch(e => console.log(e));
      console.log('Got here');
    } catch (error) {
      console.log('error', error);
    }
  }
 ...............
}

firebase.js 文件:

import firebase from 'firebase/compat/app';
import { getDatabase } from 'firebase/database';

const firebaseConfig = {
  apiKey: '......',
  authDomain: '.....',
  projectId: '....',
  storageBucket: '....',
  messagingSenderId: '....',
  appId: '.....',
  measurementId: '....',
};

if (!firebase.apps.length) {
  firebase.initializeApp(firebaseConfig);
}
export const db = getDatabase();

【问题讨论】:

标签: javascript react-native firebase-realtime-database expo


【解决方案1】:

在 Firebase SDK v9 及更高版本中,过去作为对象方法的大多数功能现在都可作为顶级函数使用。

因此,您需要使用ref(db, 'users/photos'),而不是db.ref('users/photos')

您还缺少get 调用,这是您实际从引用中检索数据的方式:

get(ref(db, 'users/photos'))
  .then(url => {
    console.log('URL: ', url);
  })
  .catch(e => console.log(e));

这在reading data 上的 Firebase 文档中都有很好的记录,所以我建议你把它放在手边。或者,您可以使用 v9 中的 compat 路径,以使旧语法工作,如 upgrade guide/

所示

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多