firebase 实时数据库一次 vs 开启?

Арт*_*тов 4 database node.js firebase firebase-realtime-database

我在 Node js 上使用 firebase 实时数据库,就像 API 数据库一样。

once()和之间有什么不同on()

我的代码once()运行速度非常慢。

需要它做什么off()

例子

router.get('/:qrid', async(req, res)=>{
    let id = req.params.qrid;
    let ref = firebase.database().ref('/qr/'+id);
    let snapshot = await ref.once('value');
    res.json(Object.assign({}, snapshot.val()));
});
Run Code Online (Sandbox Code Playgroud)

这个工作非常慢(250ms-3000ms)。当我使用 on() 时,速度更快。

router.get('/:qrid',(req, res)=>{
    let id = req.params.qrid;
    let ref = firebase.database().ref('/qr/'+id);
    ref.on('value',(snapshot) => res.json(Object.assign({}, snapshot.val())));
});
Run Code Online (Sandbox Code Playgroud)

Pet*_*dad 5

来自文档:

一次:

once(eventType: EventType, successCallback?: function, failureCallbackOrContext?: function | Object | null, context?: Object | null): Promise<DataSnapshot>

只侦听指定事件类型的一个事件,然后停止侦听。

这相当于调用on(), 然后off()在回调函数内部调用。有关事件类型的详细信息,请参阅 on()。

在:

on(eventType: EventType, callback: function, cancelCallbackOrContext?: Object | null, context?: Object | null): function

监听特定位置的数据变化。

这是从数据库读取数据的主要方式。您的回调将针对初始数据触发,并在数据发生变化时再次触发。用于off( )停止接收更新。

off()用于分离先前附加的回调on()

您可以查看参考:

https://firebase.google.com/docs/reference/js/firebase.database.Reference.html