Если вы посмотрите на снимок экрана, вы увидите, что смоделированный тест пройден:
![firebase test](https://i.stack.imgur.com/9BDxR.png)
Он ограничивает добавление пользовательских данных в узел пользователей, если uid не совпадает.
Вы можете видеть, что это местоположение:
/users/6OCBYNh3CTammMWrCjX0F003zab2
Другими словами:
/users/$uid
Когда я пытаюсь сделать это из кода, я получить ошибку отказа в разрешении:
private async addNewUserToFirebase(user: firebase.User): Promise<void> {
console.log('adding user to Firebase', user);
try {
const ref = this.db.list('/users');
await ref.update(user.uid, {email: 'test@test.com'});
} catch (error) {
console.error('Unable to add user to firebase db', error);
}
}
@ firebase / database: FIREBASE WARNING: обновление в / users / 6OCBYNh3CTammMWrCjX0F003zab2 не удалось: permission_denied
Однако, если я изменю правило просто
".write": "auth != null"
, тогда оно работает. Так почему же это не удается, когда я пытаюсь сопоставить uid?
ПРИМЕЧАНИЕ
Я также пробовал:
const refAccount = this.db.list('/users');
await refAccount.update(`/${user.uid}`, {email: "test@test.com");
и получаю то же самое ошибка.
Я пробовал с несколькими пользователями как из симулятора, так и из кода. Результаты согласуются.
Тем не менее, этот вопрос показывает идентичные правила, и для этого OP он работает.