【问题标题】:How to deal with null value in realtime database transaction?如何处理实时数据库事务中的空值?
【发布时间】:2021-12-29 08:08:46
【问题描述】:

我想要一个可以使用事务递增或递减的计数器。我不想将计数器初始化为 0,而是它在开始时不存在。所以我会写如下的增量事务

ref.transaction(function(counterValue){
    if (counterValue == null) return 1
    else return (counterValue +1)
},function(error,committed,snapshot){
   if (error){//fail
   }else if (!committed){//aborted
   }else{//successfull
   }
})

但我不确定事务是否会正确运行,因为 counterValue 的 null 值可能意味着没有现有节点,而且当本地缓存为空时也是如此。 谁能告诉我我应该怎么做?

【问题讨论】:

    标签: javascript firebase-realtime-database transactions


    【解决方案1】:

    counterValue 的 null 值可能意味着不存在节点,也可能意味着本地缓存为空

    如果由于本地缓存不包含当前值而将现有值报告为 null,那么您返回的新值并不重要,因为无论如何您的处理程序都会重新运行。

    所以你的处理程序对我来说看起来不错,尽管我通常将其缩短为:

    return (counterValue || 0) + 1
    

    【讨论】:

    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多