Артём Котов
Артём Котов

Reputation: 329

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

Upvotes: 4

Views: 3809

Answers (1)

Peter Haddad
Peter Haddad

Reputation: 80914

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

Upvotes: 5

Related Questions