Я настроил Firebase и все работает нормально. Теперь я хочу увеличить значение, когда кто-то нажимает на имя, в первый момент я подумал: «Давай просто обновим его». Но быстро я понял, что это не правильный путь. Я создаю действительно простую многопользовательскую игру, так что есть шанс, что кто-то еще нажмет это имя в тот же момент. Это создаст проблему.
Я посмотрел ее и обнаружил, что транзакция Firebase является правильным подходом, я просмотрел несколько руководств и нашел следующий код:
const renderList = ({ item }) => {
return (
<ListItem
style={{
marginTop: 10,
width: 380,
}}
roundAvatar
title={playerList[item].username}
subtitle={item.subtitle}
onPress={() => {
logIn(roomId, playerList[item].username)
}}
/>
)
};
const increasePress = () => {
const myRef = firebase.database().ref('MP/rooms/testroom/participants/Max/')
await firebase.firestore().runTransaction((transaction) => {
const snapshot = await transaction.get(myRef);
return snapshot.update(myRef,'press',snapshot.data().press + 1)
});
}
useEffect(() => {
ownParticipantRoom.update({
username: username,
host: isHost,
press: 9,
connected: 1,
})
}, [gamePercentage])
Я знаю, что первая причина, по которой это не работает, заключается в том, что я использую Await вне функции asyn c. Однако я никогда не использовал это. Как я могу это исправить?