Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js firebase实时数据库once vs on?_Node.js_Database_Firebase_Firebase Realtime Database - Fatal编程技术网

Node.js firebase实时数据库once vs on?

Node.js firebase实时数据库once vs on?,node.js,database,firebase,firebase-realtime-database,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

我在节点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())));
});
从文档中:

一次:

一次(eventType:eventType,successCallback?:函数,failureCallbackOrContext?:函数|对象| null,上下文?:对象| null):承诺

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

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

关于:

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

侦听特定位置的数据更改

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

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

您可以检查参考:


我读了《医生》,但这不是我问题的答案。对于API,我应该使用off()?如果我从不使用off(),我的节点js服务器将始终连接到firebase,请求将更快?不,如果不使用
off()
,请求将不会更快
off()
通常在离开页面时用于取消订阅侦听器并避免内存泄漏