在 Firebase 安全规则中无法正常工作

问题描述 投票:0回答:1

我正在使用 firestore 模拟器,当文档存在时,exists 不会阻止调用。

match /usernames/{username} {
  allow update: if false;
  allow create: if isUsernameAvailable(request.resource.data.username);

  function isUsernameAvailable(rawName) {
      let name = rawName.lower();

      return isValidMessage() &&
             isValidUsername(name) &&
             !exists(/databases/$(database)/documents/users/$(request.auth.uid));
  }

这是已接受的请求: Request

和现有文件:

Pre-Existing Document

该文件显然存在。我已将我的代码与类似代码进行了比较,并且没有看到语法错误,所以我不知所措。

google-cloud-firestore firebase-security
1个回答
0
投票

第二张截图右下角的文档标题以斜体显示,这意味着该文档实际上并不存在。 ID 仅显示在 Firestore 控制台中,因为您的子集合中包含数据。

由于该文档实际上并不存在,因此在该路径上调用

exist
会正确返回 false。

© www.soinside.com 2019 - 2024. All rights reserved.