【问题标题】:firebase realtime database once vs on?firebase实时数据库一次与一次?
【发布时间】:2020-03-31 07:37:12
【问题描述】:

我在节点 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()));
});

这项工作非常缓慢(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())));
});

【问题讨论】:

    标签: node.js database firebase firebase-realtime-database


    【解决方案1】:

    来自文档:

    一次:

    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

    【讨论】:

    • 我阅读了文档,但这不是我问题的答案。对于 API,我应该使用 off()?如果我从不使用 off(),我的节点 js 服务器将始终连接到 firebase 并且请求会更快?
    • 不,如果你不使用off() ,请求不会更快。 off() 通常用于离开页面以取消订阅侦听器并避免内存泄漏
    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 2019-10-31
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多