为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase 交易会出错吗?

Firebase 交易会出错吗?

暮色呼如 2021-10-29 14:57:54
我有一个应用程序,允许用户每天投票 5 次。每次投票都会推送到一个votes节点。我有一个的onCreate云功能听votes揭开序幕了一些交易,每一个刚增量几个节点之一tally/total,tally/users/{userId}等等。投票功能和 onCreate 已经过测试并按预期工作。昨天我们部署到生产环境,我运行了一个查询tally/users,看看是否有任何用户找到了一天投票超过 5 次的方法。当然,有两个用户在第一天被标记为已投票 6 次。于是我在实际votes节点上查询了一下,发现那些用户实际上只提交了5票。所以...我的交易对 5000 多个用户中的两个不起作用。对于我们的案例,我们真的不需要这些计数器非常准确,但是有什么关系呢?我是否遗漏了有关 firebase 交易的某些信息,或者它们真的不能指望吗?(双关语)不要取笑我结构不佳的数据库...exports.allVotesOnCreate = functions.database  .ref('/votes/all/{pushId}')  .onCreate(    (snapshot, context) => {      const vote = snapshot.val();      const { date, userId, uid } = vote;      return Promise.all([        // removed other transactions for brevity        ref(`tally/all/total`)          .transaction(value =>             value ? value + 1 : 1        ),        ref(`tally/user/byDate/${userId}/${date}`)          .transaction(value =>            value ? value + 1 : 1        ),      ]).catch(err => {        console.error(`Error tallying vote ${uid}`, err);      });    }  );我预计votes特定用户在特定日期的投票数将与其在 中的票数相匹配tally/user/byDate/{userId}/{date},但也有少数事件,当实际票数为 5 时,票数为 6。我什至可以预期,如果交易以某种方式失败,计数可能会少于实际投票数,但更多?如何?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号