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
相关产品推荐
相关产品推荐

