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