我正在使用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());
}
}
答案 0 :(得分:1)
已解决错误::错误正在运行模拟—发生未知错误(查看过时的模拟)。 使用存在(/databases/{database}/documents/Attendants/$(request.auth.uid)) 这行得通。
通过尝试对实际开发进行测试来解决。
结论:这是有关Firestore规则模拟的问题。