将数据放在Firebase数据库中多个位置的最佳方法

时间:2018-07-19 22:40:59

标签: javascript firebase firebase-realtime-database

我对Firebase数据库不太熟悉, 我想将数据存储在target1中,如果成功,则会将一些数据存储到target2中。

目前我正在这样做:

Database.ref('target1').push({
  name: name,
  email: email
})
.then(()=>{
   Database.ref('target2').push().set({
     name: name,
     email: email
   })
   .then(()=>{
      console.log('success')
   })
})

这是在target1和target2中存储数据的正确方法吗? 如果target1或target2失败,如何捕获错误?

1 个答案:

答案 0 :(得分:3)

您的方法有效,但这意味着您要在两次调用中编写它。因此,在成功写入target2之后,对target1的写入可能会失败。

如果希望它们都作为一项操作成功或失败,则需要使用多位置更新。要通过多位置更新获得与您当前代码完全相同的结果,它将类似于:

var key1 = Database.ref('target1').push().key;
var key2 = Database.ref('target2').push().key;
var updates = {};
updates["target1/"+key1] = {
  name: name,
  email: email
};
updates["target2/"+key2) = {
  name: name,
  email: email
};
Database.ref().update(updates)
   .then(()=>{
      console.log('success')
   })
})