【问题标题】:Firebase push promise never resolvesFirebase 推送承诺永远不会解决
【发布时间】:2018-04-29 06:32:58
【问题描述】:

我正在尝试从我的 React Native 应用程序中保存一个对象。请看下面的代码sn-p。

  const { currentUser } = firebase.auth();

  firebase.database().ref(`/users/${currentUser.uid}/employees`)
    .push({ name, phone, shift })
    .then(() => {
      console.log('Save to Firebase was successful');
    })
    .catch((error) => {
    console.log(error);
  });

但在 Firebase 控制台中,我什么也没看到。我很惊讶 then 和 catch 甚至没有被调用。我错过了什么?控制台不显示任何错误。

我的 Firebase 数据库规则:

这是我的 Firebase 实时数据库视图:

问题-我正在推送到/users/${currentUser.uid}/employees 路径,我需要手动创建“用户”节点吗?

【问题讨论】:

  • 您是否调用了使用您的 Firebase 凭据初始化您的应用程序? App.js 文件中的内容如下所示:firebase.initializeApp(config)
  • 是的,在 App.js 的 componentWillMount() 回调中处理了这个问题。 Firebase 身份验证工作正常。
  • 数据库规则呢?也许您的操作因您编写的数据库规则而被拒绝,并且您以某种方式使应用程序中的警告静音?
  • 您的控制台是否显示“保存到 Firebase 成功”
  • 我在原始帖子中添加了 Firebase 数据库规则。承诺永远不会解决,我没有看到“保存到 Firebase 成功”或错误日志。

标签: javascript firebase firebase-realtime-database


【解决方案1】:

在 Firebase 中,push() 函数为每个新子节点生成一个唯一键,set() 或 update() 函数在节点中插入或更新数据。

试试这个:

  firebase.database().ref(`/users/${currentUser.uid}/employees`)
    .push()
    .set({ name, phone, shift })
    .then(() => {
      console.log('Save to Firebase was successful');
    })
    .catch((error) => {
    console.log(error);
  });

或者这个:

 let niceKey =  firebase.database().ref(`/users/${currentUser.uid}/employees`).push()

niceKey.set({ name, phone, shift })
    .then(() => {
      console.log('Save to Firebase was successful');
    })
    .catch((error) => {
    console.log(error);
  });

【讨论】:

    【解决方案2】:

    不要使用推送将数据保存到 Firebase,而是使用 setupdate。它是这样工作的:-

    firebase.database().ref(`/users/${currentUser.uid}/employees`).set({
        name: name,
        phone: phone,
        shift : shift
    });
    

    欲了解更多信息,请访问:- https://firebase.google.com/docs/database/web/read-and-write

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-05-06
      • 2019-11-29
      • 2021-11-04
      • 1970-01-01
      • 2017-05-31
      • 2020-04-15
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      相关资源
      最近更新 更多