React Native中使用Firebase新增文档后如何将其ID存储到其他位置
问题原因
- Firestore的
collection.add()方法执行成功后,返回的Promise兑现值是新创建文档的DocumentReference实例,不存在docs属性,所以调用snapshot.docs.map会抛出类型错误。 - 额外注意:
add()方法要求传入的参数是对象格式,如果你的albumName是字符串类型,直接传入也会触发参数不匹配的错误。
修正后代码
const createAlbum = () => { firebase .firestore() .collection("albums") // add方法要求传入对象,此处示例存储字段为albumName,可按需调整字段名 .add({ albumName: albumName }) .then((docRef) => { // 直接从DocumentReference实例获取文档ID即可,无需遍历处理 const newAlbumId = docRef.id; for (let i = 0; i < usersSelected.length; i++) { firebase .firestore() .collection("following") .doc(usersSelected[i].id) .collection("userFollowing") .doc(newAlbumId) .set({}); } }) // 新增错误捕获,避免出现未处理的Promise拒绝警告 .catch((err) => { console.error("创建专辑操作失败:", err); }); };
补充说明
- 如果你需要获取新创建文档的完整存储数据,可以在拿到
docRef后调用docRef.get()获取文档快照,再读取对应字段内容。 - 涉及多文档批量写入的场景,建议改用Firestore的批量写入(Batch Write)接口,可保证所有写入操作要么全部成功要么全部失败,避免出现数据不一致的问题。
内容的提问来源于stack exchange,提问作者Simon Pintz
相关产品推荐
相关产品推荐

