Firebase事务以意外方式运行 - 云功能

时间:2018-02-15 13:05:59

标签: firebase firebase-realtime-database transactions google-cloud-functions

我有一个云功能,当用户跟随​​另一个用户时会触发该功能。交易应该递增计数器

exports.userFollowed = functions.firestore.document("Users/{toUser}/followers/{byUser}").onCreate(userFollowed);

阅读许多关于如何处理 null 案例的论坛和文档。仍然无法让它正常工作。我甚至将该位置的价值替换为' blabla'我为 null 案例返回了。

数据库中的数据最初看起来如下所示

<uid>
    followers: 0
    following: 0

在跟随操作中触发的功能

function userFollowed(event) {
   byUserStatsRef = rltd.ref('UserStatistics/' + toUser),
   byUserStatsRef.transaction(byCurrentStats => {
                if (!byCurrentStats) {
                    return 'blabla';
                } else {
                    byCurrentStats.following = parseInt(byCurrentStats.following) + 1
                    return byCurrentStats;
                }

            }, function (error, committed, ss) {
                if (committed) {
                    console.log("committed", committed);
                }
            }, true),
}

同时测试时计数增加不正确。我做错了什么。

请注意,这是云功能(服务器SDK)

中的三分法

1 个答案:

答案 0 :(得分:0)

在某些情况下,交易可能会返回null,因为该函数可能在缓存新值之前触发。

firebase Cloud function transaction working sporadically

https://firebase.google.com/docs/database/web/read-and-write#save_data_as_transactions

“即使您的远程数据库中有现有数据,运行事务功能时也可能不会在本地缓存它,从而导致初始值为null。”