【问题标题】:How to fix 'Object(...) is not a function' on ref().set() for Firebase?如何在 Firebase 的 ref().set() 上修复“Object(...) 不是函数”?
【发布时间】:2019-04-06 06:50:39
【问题描述】:

我正在尝试为 Firebase 中新创建的用户添加自定义信息。我正在正确使用 ref().set() 并且由于某种原因它告诉我它不是一个函数。我错过了什么?

我已确保我使用了正确的语法和方法。一切都已定义。

这是我控制台中的错误: Console Error

TypeError: Object(...) is not a function 
at writeUserName (db.js:4)
at SignUp.js:54

这是我的 Firebase 配置: Firebase Config

import firebase from 'firebase/app';
import 'firebase/database';
import 'firebase/auth';

const config = {
  apiKey: "AIzaSyDuhQeHZTJOaKdqJhasEKq0jLs4Cv6VZwk",
  authDomain: "yokrapp.firebaseapp.com",
  databaseURL: "https://yokrapp.firebaseio.com",
  projectId: "yokrapp",
  storageBucket: "yokrapp.appspot.com",
  messagingSenderId: "303116446076"
};

firebase.initializeApp(config);

export const firebaseAuth = firebase.auth;
export const database = firebase.database();
export const ref = firebase.database().ref();

这是引发错误的代码: ref().set() -> Object(...) is not a function

import { ref } from '../config';

export const writeUserName = (userId, name) => {
  ref('users/' + userId).set({
    name,
  });
};

提前感谢您的帮助!

【问题讨论】:

  • 如果您尝试从配置文件而不是 ref 导入数据库并使用相同的代码,您会得到相同的错误吗?否则现在你正在有效地做firebase.database().ref().ref(someStringPath).set();
  • 有效!谢谢!
  • 很高兴听到。我已经用解决方案创建了一个答案。请标记它是否有助于解决问题。谢谢!

标签: javascript reactjs firebase firebase-realtime-database


【解决方案1】:

尝试从您的配置文件中导入 database 以用于您现有的 writeUserName 函数:

import { database } from '../config';

export const writeUserName = (userId, name) => {
  database.ref('users/' + userId).set({ name });
};

正如目前导入ref 一样,您正在有效地做:

firebase.database().ref().ref('users/' + userId).set();

否则你可以使用child()ref 导出:

import { ref } from '../config';

export const writeUserName = (userId, name) => {
  ref.child('users/' + userId).set({ name });
};

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2018-09-28
    • 2016-08-30
    • 2021-12-26
    • 2015-12-29
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2020-10-02
    相关资源
    最近更新 更多