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

Firebase Firestore新增文档报Invalid document reference错误如何解决

问题原因

  1. 初始报错的核心是addDoc方法入参使用错误:
    addDoc的第一个参数必须是集合引用,作用是在指定集合中自动生成文档ID并写入数据。你最初传入的是doc(collection(db, 'udstyr'))返回的文档引用,Firebase会误判为要在这个文档下创建子集合的文档,最终生成udstyr/自动生成的文档ID/子文档ID的3段路径,不符合Firestore「集合路径为奇数段、文档路径为偶数段」的规则,因此抛出段数错误。
  2. 改完代码后无报错也无效果的核心原因是:你代码中使用的generateUUID方法没有定义也没有引入,执行到这一行时会直接抛出异常被catch捕获,你没有打开浏览器控制台的话就看不到打印的错误信息。

解决方案

提供两种可用的写法,按需选择即可:

写法1:使用Firebase自动生成的文档ID(推荐)

Firebase自动生成的文档ID已经具备全局唯一性,不需要额外自己生成UUID:

export async function opretUdstyr(navn, type, note) {
    try {
        let nyUdstyr = {
            navn: navn,
            type: type,
            note: note,
            status: "Tilgængelig",
            fra: "",
            til: ""
        };
        // 直接传入集合引用,addDoc会自动生成ID创建文档
        const docRef = await addDoc(collection(db, 'udstyr'), nyUdstyr);
        // 如果需要把文档ID存到字段里,可以追加更新
        await setDoc(docRef, { UUID: docRef.id }, { merge: true });
        console.log("设备新增成功,文档ID:", docRef.id)
    } catch (e) {
        console.error("新增设备失败:", e)
    }
}

写法2:使用自定义UUID作为文档ID

如果一定要用自己生成的UUID作为文档ID,使用setDoc方法即可,注意要先确保generateUUID方法已经正确引入或定义:

export async function opretUdstyr(navn, type, note) {
    try {
        // 此处必须确保generateUUID方法可用
        const uuid = generateUUID();
        // 手动指定文档ID为生成的UUID
        const docRef = doc(db, 'udstyr', uuid);
        let nyUdstyr = {
            navn: navn,
            type: type,
            note: note,
            status: "Tilgængelig",
            fra: "",
            til: "",
            UUID: uuid
        };
        await setDoc(docRef, nyUdstyr);
        console.log("设备新增成功,文档ID:", uuid)
    } catch (e) {
        console.error("新增设备失败:", e)
    }
}

额外排查点

如果修改代码后还是写入失败,检查Firestore安全规则是否开放了写入权限,测试阶段可以临时使用以下规则验证(上线前请替换为符合业务安全要求的规则):

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:54:01