Reputation: 329
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
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 callingoff()
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