Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

firebase realtime database once vs on?

Im using firebase realtime database on node js like database for API.

What's the different between once() and on()?

My code with once() work very slowly.

What is it needed for off()?

Example

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()));
});

This work very slowly (250ms-3000ms). When I use on() it all faster.

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())));
});
like image 358
Артём Котов Avatar asked Oct 21 '25 18:10

Артём Котов


1 Answers

From the docs:

once:

once(eventType: EventType, successCallback?: function, failureCallbackOrContext?: function | Object | null, context?: Object | null): Promise<DataSnapshot>

Listens for exactly one event of the specified event type, and then stops listening.

This is equivalent to calling on(), and then calling off() inside the callback function. See on() for details on the event types.

on:

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

Listens for data changes at a particular location.

This is the primary way to read data from a Database. Your callback will be triggered for the initial data and again whenever the data changes. Use off( ) to stop receiving updates.

off() is used to detach a callback previously attached with on()

You can check the reference:

https://firebase.google.com/docs/reference/js/firebase.database.Reference.html

like image 150
Peter Haddad Avatar answered Oct 23 '25 06:10

Peter Haddad