You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:45:00