如何增加 Firebase 实时数据库 (v9) 中的值

Llo*_*joo 4 javascript firebase firebase-realtime-database

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

===

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

API 文档在这里

使用示例:

firebase.database()
    .ref('node')
    .child('clicks')
    .set(firebase.database.ServerValue.increment(1))
Run Code Online (Sandbox Code Playgroud)

或者你可以递减,只需将 -1 作为函数 arg ,如下所示:

firebase.database()
    .ref('node')
    .child('clicks')
    .set(firebase.database.ServerValue.increment(-1))
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Ren*_*nec 8

它在 V9 中仍然可用,您可以在文档中找到它。所以下面的方法应该可以解决问题。

import { ... , increment } from 'firebase/database';

// ...

const setWeekComplete = async () => {
    await set(ref(database, `users/${user}/streakCounter`), {
        weeks: increment(1)
    });
  } 
Run Code Online (Sandbox Code Playgroud)

  • `set()` 是一个异步方法。因此,您通常使用 async/await 来知道它何时被执行(如果返回结果则获取结果,而 `set()` 则不是这种情况),但如果您不关心结果,您可以无需等待即可调用它。 (3认同)