在Firebase RTDB中发送基于文本的数据,并在Firebase Storage中上传图像文件,如果失败了怎么办?

时间:2019-05-04 04:06:00

标签: javascript firebase firebase-realtime-database firebase-storage

我在测试应用程序中具有一项功能,该功能允许用户针对每个“数据收集”提交基于文本的数据和一个图像文件。我有以下代码来存储这两个数据:

let rtdbRef = firebase.database().ref().child('someNode').push();
let pushedKey = rtdbRef.key;

rtdbRef.set({
  someKey: someValue
})
.catch((e) => {
  //Handle error;
});

let storageRef = firebase.database().ref().child('images/' + pushedKey);
storage.put(myFile).then((snapshot) => {
  console.log('File upload successful');
}).catch((e) => {
  //Handle error;
});

如您所见,我正在使用两个独立的Promise链上传数据。因此,我将其更改为以下内容:

let rtdbRef = firebase.database().ref().child('someNode').push();
let pushedKey = rtdbRef.key;
let storageRef = firebase.database().ref().child('images/' + pushedKey);

rtdbRef.set({
  someKey: someValue
})
.then({
    return storageRef.put(myFile).then((snapshot) => snapshot);
})
.catch((e) => {
  //Handle error;
});

我更改了初始代码,是因为我认为可能会存储基于文本的数据,但图像文件上传失败。但是,将我的初始代码更改为第二个代码似乎并没有任何改善:

  • 如果我将两条链分开,那是否表示我同时同时发送我的基于文本的数据和图像文件,这使发送速度更快?如果答案是肯定的,我应该坚持最初的代码吗?
  • 我最初的担心仍然存在:如果基于文本的数据发送成功成功,而图像文件上传失败,该怎么办。如何使它在两次存储数据尝试中的任何一次失败时都取消整个数据存储操作?

0 个答案:

没有答案