【问题标题】:How to increment values in Firebase Realtime Database (v9)如何在 Firebase 实时数据库 (v9) 中增加值
【发布时间】:2023-03-23 23:30:01
【问题描述】:

我注意到有关于如何在 Javascript v8 中为实时数据库增加值的说明:

===

添加了 ServerValue.increment() 以支持无事务的原子字段值增量。

API 文档在这里

使用示例:

firebase.database()
    .ref('node')
    .child('clicks')
    .set(firebase.database.ServerValue.increment(1))

或者你可以递减,把 -1 作为函数 arg 像这样:

firebase.database()
    .ref('node')
    .child('clicks')
    .set(firebase.database.ServerValue.increment(-1))

但是,我注意到 v9 文档中没有对 ServerValue 的任何引用。

这是否意味着此功能不可用?

我已经尝试自己将其转换为 v9,但到目前为止我还没有成功:

const setWeekComplete = () => {
    set(ref(database, `users/${user}/streakCounter`), {
        weeks: database.ServerValue.increment(1)
    });
  }    

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    它在 V9 中仍然可用,您会发现它here in the doc。所以以下应该可以解决问题。

    import { ... , increment } from 'firebase/database';
    
    // ...
    
    const setWeekComplete = async () => {
        await set(ref(database, `users/${user}/streakCounter`), {
            weeks: increment(1)
        });
      } 
    

    【讨论】:

    • 只是为了检查 - 您是否建议对所有实时数据库操作使用异步等待?我注意到文档没有使用 async 和 await
    • set() 是一种异步方法。因此,您通常使用 async/await 来了解它何时执行(如果返回结果则获取结果,set() 不是这种情况),但如果您不关心结果,您可以调用它无需等待。
    • 明白了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    相关资源
    最近更新 更多