Node.js firebase实时数据库once vs on?
我在节点js上使用firebase实时数据库,就像API数据库一样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
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()
通常在离开页面时用于取消订阅侦听器并避免内存泄漏