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

4

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

===

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

API文档请参见此处

用法示例:

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

或者你可以进行递减操作,只需将函数参数设置为 -1:

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)
    });
  }    
1个回答

8

它在V9版本中仍然可用,您可以在文档中找到它。所以以下内容应该可以解决问题。

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

// ...

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

只是为了确认 - 您是否建议对于所有实时数据库操作都使用async await?我注意到文档没有使用async和await。 - Lloyd Rajoo
3
set()是异步方法,因此通常使用async/await来了解何时已执行它(并获取结果,如果它返回一个结果的话,这在set()的情况下并不适用)。但如果您不关心结果,则可以在不等待的情况下调用它。 - Renaud Tarnec
明白了,谢谢! - Lloyd Rajoo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接