gpt4 book ai didi

firebase - 无法使 Firestore 规则中包含 'get' 部分的函数正常工作

转载 作者:行者123 更新时间:2023-12-02 19:17:18 24 4
gpt4 key购买 nike

在我的 Firestore 规则中,我具有以下功能:

//True if the current user is 1 of the admins of this event, false otherwise
function isAnAdminOfEvent(){
return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.mail in resource.data.admins;
//return "eUB5Lnl5" in resource.data.admins;
}

不知何故,这条规则总是失败。当我注释第一行并注释掉最后一行时,规则运行良好。请注意,我确定当前用户对象确实具有设置为“eUB5Lnl5”的邮件属性。

用户对象具有以下获取权限:

match /users/{userId} {
allow read: if request.auth.uid == userId; //users can only read their own data
}

备注:这是我的规则定义的第一部分,其中我使用“get”方法。我可能在这里做错了什么......

根据评论中的要求添加:

当前失败的测试代码如下:

//Check that event admins are allowed to update other data of the event, such as the description or color
CompletableFuture<Boolean> futureEventAdminChangeAction = new CompletableFuture<>();
mFieldsMap.clear();
mFieldsMap.put(DESCRIPTION, "An updated description!");
mFieldsMap.put(COLOR, 3);
mFieldsMap.put(NAME, "The new name");
FireUtilEvents.getEvent( key ).set( mFieldsMap, SetOptions.merge()).addOnCompleteListener(task -> futureEventAdminChangeAction.complete( task.isSuccessful() ));
Assert.assertEquals( true, futureEventAdminChangeAction.get() );

在测试中,我正在验证是否允许事件管理员更新他作为管理员的事件。事件数据的更新规则如下:

allow update: if isNoEventOwnerChange() && 
(isOwner() || (isAnAdminOfEvent() && isNotForbiddenAdminChange()));

在测试中:

  • isNoEventOwnerChange() 返回 true,
  • isOwner() 返回 false,
  • isNotForbiddenAdminChange() 返回 true,
  • isAnAdminOfEvent() 返回 false(这是意外的)。

最佳答案

将函数的定义 isAnAdminOfEvent 放入 match/databases/{database}/documents block 中。

关于firebase - 无法使 Firestore 规则中包含 'get' 部分的函数正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51253329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com