使用Firestore批量操作同时创建集合与子集合失败求助
解决Firebase批量创建团队与子集合球员的问题
你的代码问题出在批量操作的API调用错误,你在batch.set()里嵌套调用了文档的set()方法,这不符合Firebase的批量操作规范,导致第二个写入操作根本没被正确添加到批次中。
修正后的代码
const batch = db.batch() // 获取团队文档的引用 const teamDocRef = db.collection('users').doc(user.uid).collection('teams').doc(id) // 向批次添加团队写入操作 batch.set(teamDocRef, { teamId: id, teamName: teamName }) // 获取球员文档的引用 const playerDocRef = teamDocRef.collection('players').doc(player.id) // 向批次添加球员写入操作 batch.set(playerDocRef, playerObject) // 提交批次操作 batch.commit() .then(() => { console.log('团队及球员创建成功') }) .catch(err => console.log('批量操作失败:', err))
关键说明
- Firebase批量操作的
batch.set()方法,第一个参数是文档引用,第二个参数是要写入的数据对象,不需要再调用文档自身的set()方法。你原来的写法相当于把doc.set()的返回值(一个Promise)传给了batch.set(),这完全不符合API要求。 - 不存在“集合未创建导致写入失败”的问题,Firebase会在你写入第一个文档时自动创建对应的集合,无需提前手动创建。
内容的提问来源于stack exchange,提问作者User123123
相关产品推荐
相关产品推荐

