繁体   English   中英

React Native 中的 Firebase 事务

[英]Firebase transaction in React Native

我已经设置了 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。 不过我从来没有用过这个。 我该如何解决?

我已经使用以下代码修复了它:

    const increasePress = () => {
        const myRef = firebase.database().ref('MP/rooms/testroom/participants/Max/').child('press');
        myRef.transaction(function (currentPress) {
            return currentPress + 1
        })
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM