首页 > 解决方案 > Firebase 推送承诺永远不会解决

问题描述

我正在尝试从我的 React Native App 中保存一个对象。请看下面的代码片段。

  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 数据库规则

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

Firebase 实时数据库视图

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

标签: javascriptfirebasefirebase-realtime-database

解决方案


在 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);
  });

推荐阅读