找出哪个Firestore批处理操作失败以及将哪些数据写入db?

时间:2018-11-22 10:56:52

标签: javascript firebase google-cloud-firestore

我具有一个创建角色的功能,该角色需要两次写入firestore才能创建角色并创建用户名(我创建用户名,然后检查其是否已存在,即强制执行唯一的用户名)。

try {
  const characterPrivateRef = firestore().doc(`characters/${uid}`);
  const usernameRef = firestore().doc(`usernames/${username}`);
  firestore().batch().batch.create(characterRef, {...characterData});
  firestore().batch().batch.create(characterPrivateRef, {...usernameData});

  await firestore().batch().commit();
  // How can I get data written to each firestore document from batch 
  here?
} catch (e) {

  // How can I check what batch failed here i.e. if it was username I 
  want to show error saying something like ("Username already exists")
}

1 个答案:

答案 0 :(得分:2)

如果使用批处理写入,则意味着您尝试将数据写入Firestore数据库原子,这意味着所有操作都将成功或所有操作都将失败。据我所知,没有办法知道批处理中的这两个操作中的哪一个失败了。相反,您可以做的是附加一个完整的侦听器,并在批处理操作失败后获取错误消息。如果您想知道哪个操作失败,则应该将数据分别写为两个不同的写操作。