我具有一个创建角色的功能,该角色需要两次写入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")
}
答案 0 :(得分:2)
如果使用批处理写入,则意味着您尝试将数据写入Firestore数据库原子,这意味着所有操作都将成功或所有操作都将失败。据我所知,没有办法知道批处理中的这两个操作中的哪一个失败了。相反,您可以做的是附加一个完整的侦听器,并在批处理操作失败后获取错误消息。如果您想知道哪个操作失败,则应该将数据分别写为两个不同的写操作。