【发布时间】:2020-04-02 14:00:53
【问题描述】:
我已经设置了 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。但是我从来没有使用过这个。我该如何解决?
【问题讨论】:
-
我对 JS 很陌生,但你能尝试将
const increasePress = () => {修改为const increasePress = async () => {吗? -
谢谢,按照你所说的,我不再收到错误消息了。但是,我发现了另一种可行的方法。我会把它作为答案发布。
标签: reactjs database firebase transactions native