Обновите после ваших комментариев:
Если вы хотите добавить разные users
в узле rooms/423c34.../users
, вам нужно передать разные значения методу child()
. Например:
const usersRef = database().ref(`/rooms/${roomId}/users`)
await usersRef.child('userKey1').set({
username: username1,
skor: 0
});
await usersRef.child('userKey2').set({
username: username2,
skor: 0
});
Если я правильно понимаю ваш вопрос, вам помогут следующие приспособления:
joinRoom = async (callback = f => f, roomId) => {
currentRoomUid = roomId
var username = ''
const snap = await database().ref(`/users/${auth().currentUser.uid}`).once('value');
const username = snap.val().username;
const room = database().ref(`/rooms/${roomId}`);
await room.set({
isStart: true,
currentQuestionIndex: 0
});
const usersRef = database().ref(`/rooms/${roomId}/users`)
await usersRef.child(auth().currentUser.uid).set({ //Note the await here
username: username,
skor: 0
});
callback(roomId)
}
Обратите внимание, что вы не await
последний вызов метода set()
, поэтому, скорее всего, обратный вызов был выполнен до того, как новый пользователь был сохранен в базе данных.
Обратите внимание, что вы можете использовать update()
метод «одновременного обновления нескольких местоположений в дереве JSON одним вызовом».