小编wtk*_*wtk的帖子

依赖于文档参考的Firestore访问规则

Firestore有一个DocumentReference类型,它是另一个firestore文档的"指针".使用firebase JavaScript客户端,您可以直接在引用上访问属性(例如文档"id").

例如,如果有一个文档的docRef属性是firestore DocumentReference:

const retrievedDoc = await getFirestoreDocument();
console.log(retrievedDoc.docRef.id); // "jRmSeMYDMKiOPGsmkdaZ"
Run Code Online (Sandbox Code Playgroud)

我试图在firestore规则中完成同样的事情.有一个名为的自定义函数isOwner.它使用get文档路径上的firestore规则调用,然后尝试访问docRef.id它,就好像它是上面的JavaScript客户端一样.

get(/databases/$(database)/documents/path/to/$(id)).data.docRef.id
Run Code Online (Sandbox Code Playgroud)

将文档id的值与当前用户的值进行比较.但是当我使用模拟器和实际代码测试时,它会失败.我觉得这应该有效,但事实并非如此.

什么的工作是存储和直接使用id的值作为字符串(例如get(/path/id).docId),而不是DocumentReference的.

我是否应该能够id在firestore规则中访问DocumentReference 的值?难道我做错了什么?

我想避免get在规则中执行第二个文档,如本SO答案所述.对于此规则的每个触发器,这是第二次"读取".而且我认为get无论如何都不会在电话上提供文件ID(这就是我需要的).

firebase firebase-security google-cloud-firestore

14
推荐指数
1
解决办法
1341
查看次数