Вам не нужно проверять, существует ли users
, прежде чем проверять, существует ли указанный c пользователь. Вы можете просто запросить у Firebase значение /users/nickname
и проверить, существует ли снимок:
const userNameRef = firebase.database().ref('/users/nickname')
userNameRef.once('value').then((snapshot) => {
console.log(snapshot.exists());
});
Поскольку вы также хотите обновить псевдоним на основании его отсутствия, вы действительно захотите использовать для этого транзакцию:
userNameRef.transaction((currentValue) => {
if (currentValue) return; // user already exists, abort the transaction
return 'JSON you want to store'; // this will create the node
});
В этом случае вы также захотите установить настроить правила безопасности, которые применяются на сервере базы данных, чтобы никогда не позволить пользователю перезаписать существующий узел:
{
"rules": {
"users": {
"$nickname": {
".write": "!data.exists()"
}
}
}
}