Функция не найдена ошибка: Имя: [получить] .;Ошибка: указан неверный аргумент для вызова.Функция: [get], Аргумент: ["|| invalid_argument ||"] - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь написать правила Firestore, которые должны будут получить пользователя из коллекции 'users' в базе данных, а затем получить его / его соответствующий объект Permissions из коллекции 'permissions'.

Воткак выглядит база данных:

В коллекции пользователей у меня есть эта запись:

{
    id: 'USER_ID',
    permissionsId: 'PERMISSIONS_1'
}

В коллекции разрешений у меня есть эта запись:

{
    id: 'PERMISSIONS_1',
    content: {
        view: true,
        create: false,
        update: false,
        delete: false,
    }
}

И этомои правила:

service cloud.firestore {
  match /databases/{database}/documents {

    function userPermissionsId() {
       return get(/databases/$(database)/documents/users/USER_ID).data.permissionsId;
    }

    function userPermissions(id) {
       return get(/databases/$(database)/documents/permissions/$(id)).data;
    }

    function getPermission(profileId, dataType, action) {
        return userPermissions(profileId)[dataType][action];
    }

    match /{collection}/{document=**} {

        // The below code returns true:
        // allow read: if userPermissionsId() == 'PERMISSIONS_1'
        // The above proves that the function userPermissionsId() is working properly and returning the permissions ID.

        // The below code also returns true:
        // allow read: if getPermission('PERMISSIONS_1', 'content', 'view');
        // The above proves that the function getPermission() is working properly when receiving a correct ID.

        // HOWEVER!! Combining the 2 won't work:
        allow read: if getPermission(userPermissionsId(), 'content', 'view');
        // This will throw the below error in the simulator.

    }
  }
}

Ошибка при попытке симуляции:

Ошибка при запуске симуляции - Ошибка: строка simulator.rules [9], столбец [15].Функция не найдена ошибка: Имя: [получить] .;Ошибка: указан неверный аргумент для вызова.Функция: [get], Аргумент: ["|| invalid_argument ||"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...