Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase observe with type .childAdded retrieves all my information every time. Please assist

According to Firebase docs:

ChildAdded is triggered once for each existing child and then again every time a new child is added to the specified path

So, I have an app, that has a little banner at the top that pops up every time a user gets a new message. As you could have guessed, these messages are stored in a child in the user object in Firebase. So, here's the problem, when I load the app, it pops up for EVERY message the user has. Is it possible to have this observe event ONLY be called when a new child is added? I don't want it to be triggered for every single existing child, only when a new one is added. I would hate to have to store message references in core data, and do a check for every child to see if it already exists in core data :/

like image 747
John Leonardo Avatar asked Sep 20 '16 00:09

John Leonardo


1 Answers

A few ways to do this:

  • Use ref.queryLimitedToLast(1) when you start. See Firebase, only get new children.
  • keep track of the most recent key you've got in your local storage and then query with queryOrderByKey().queryStartingAtValue(latestKey)
  • Add a timestamp to the items and then queryOrderByChild("timestamp").queryStartingAt(now) for items with timestamp >= now. See how to discard initial data in a Firebase DB
like image 105
Frank van Puffelen Avatar answered Oct 24 '22 18:10

Frank van Puffelen