Firebase推送承诺永远不会解决

时间:2018-04-25 20:50:08

标签: javascript firebase firebase-realtime-database

我正在尝试从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控制台中,我什么都没看到。我很惊讶当时和捕获甚至没有被召唤。我错过了什么?控制台不显示任何错误。

我的Firebase数据库规则:

My Firebase DB Rules

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

Firebase realtime DB view

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

请勿使用推送将数据保存到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

希望它会有所帮助。