Firebase实时数据库一次VS上?

时间:2019-12-06 10:07:20

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

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

此工作非常缓慢(250毫秒至3000毫秒)。当我使用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())));
});

1 个答案:

答案 0 :(得分:0)

从文档中

一次:

  

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