【发布时间】:2019-12-14 00:47:56
【问题描述】:
我正在使用 Firestore 规则并想在函数中调用 get()/exist(),然后在子集合中调用该函数。但是会报错:
错误运行模拟 - 发生未知错误(查看过时的模拟)
你能帮忙指出我的错误吗?
当我尝试 允许创建: if get(/databases/{database}/documents/Attendants/$(request.auth.uid).data.UserID)!=request.auth.uid
会报如下错误:
错误运行模拟 - 错误:simulator.rules 行 [12],列 [31]。找不到函数错误:名称:[get]。;错误:提供给调用的参数无效。函数:[get],参数:["||invalid_argument||"](查看过时的模拟)
当我关注这个文档https://firebase.google.com/docs/firestore/manage-data/transactions 并尝试exist() 时:
存在(/databases/{database}/documents/admins/$(request.auth.uid)); 还是不行。
我尝试了不同的路径,即使我尝试了完整的路径,它也可以正常工作。
get(/databases/$(database)/documents/GroupExperiences/Experience/PrivateExperience/XmZPoKKQuZBeP68KAIJl/Admins/it07).data
match /PrivateExperience/{Experience}
{
function isAdmin()
{
//return true;
return exists(/databases/$(database)/documents/Admins/$(request.auth.uid));
}
function isAttendant()
{
return exists(/databases/$(database)/documents/Attendants/$(request.auth.uid));
}
allow create: if request.auth == null;
match /Activities/{Activity=**}
{
allow create: if (isAdmin() || isAttendant());
}
}
【问题讨论】:
标签: google-cloud-firestore firebase-security