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

FirebaseError预期Hc类型得自定义Yc对象 Firestore批量写入报错

报错含义解释

该报错是Firebase JS SDK代码混淆后抛出的类型不匹配提示,Hc是SDK内部对**文档引用(DocumentReference)的混淆命名,Yc是对集合引用(CollectionReference)**的混淆命名,翻译成人话就是:批量操作要求传入文档引用作为操作对象,但你传入了集合引用。

问题定位

你的代码中存在明显的参数类型错误:

const Collections = db
  .collection("Tasks")
  .doc(ArryOfIds[i])
  .collection("SingleTask"); // 此处拿到的是集合引用,不是文档引用
batch.set(Collections, { // 批量set方法第一个参数要求传入文档引用,此处传了集合直接触发类型报错
  creater: firebase.auth().currentUser.uid,
  // 其他字段省略
});

你之前其他类似逻辑正常运行,是因为那些场景中你最终调用.doc(xx)拿到了文档引用,本次逻辑漏了给SingleTask集合指定要操作的文档ID,所以拿到的是集合对象,类型不匹配触发报错。

解决思路

根据你的业务需求二选一修改即可:

  • 若需要给SingleTask集合新增自动生成ID的文档:调用集合的.doc()方法不传入参数,SDK会自动生成唯一文档ID,返回对应的文档引用
    修正后的循环内代码示例:
    for (let i = 0; i < ArryOfIds.length; i++) {
      // 调用无参.doc()生成自动ID的文档引用
      const taskDocRef = db
        .collection("Tasks")
        .doc(ArryOfIds[i])
        .collection("SingleTask")
        .doc();
      batch.set(taskDocRef, {
        creater: firebase.auth().currentUser.uid,
        UpdatedOn: new Date().toString(),
        CreatedOn: new Date().toString(),
        email,
        title,
        tag,
        prayority,
        completed,
      });
    }
    
  • 若需要写入SingleTask集合下指定ID的文档:给.doc()方法传入你要操作的目标文档ID即可。

内容的提问来源于stack exchange,提问作者fouzan ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:06:04