React Native集成Firebase/Firestore遇documentPath参数指向文档错误
解决Firestore Error: Argument "documentPath" must point to a document的问题
这个错误的核心原因很明确:你传给firestore().doc()的路径不合法——具体是uid变量的值为空或者undefined,导致最终生成的路径是/status/或者/status/undefined,Firestore要求文档路径必须指向一个有效的文档,空的/无效的文档ID会触发这个报错。
看你的代码,问题出在匿名登录后的uid获取方式:
firebase.auth().signInAnonymouslyAndRetrieveData().then((user) => { var uid = firebase.auth().currentUser.uid; var userStatusFirestoreRef = firebase.firestore().doc('/status/' + uid); });
虽然匿名登录成功了,但firebase.auth().currentUser可能因为本地状态同步的延迟,暂时还没更新为刚登录的匿名用户,这时候取uid就会得到undefined。而实际上,登录成功的回调参数user里已经包含了完整的用户信息,直接从这里取uid才是最可靠的方式。
修正后的代码
firebase.auth().signInAnonymouslyAndRetrieveData().then((authResult) => { // 从登录结果的user对象里直接取uid const uid = authResult.user.uid; // 加个判断确保uid存在,避免后续报错 if (uid) { const userStatusFirestoreRef = firebase.firestore().doc(`/status/${uid}`); // 这里可以继续你的逻辑,比如写入数据到这个文档 } else { console.error('无法获取有效的用户ID'); } });
额外排查点
- 确保你的Firebase应用已经正确初始化,在调用Firestore相关方法前,
firebase.apps.length应该大于0 - 如果后续还是有问题,可以检查Firestore的安全规则,确保允许当前用户访问
status集合(不过这个报错本身和权限无关,是路径格式问题)
内容的提问来源于stack exchange,提问作者Manspof
相关产品推荐
相关产品推荐

