Question: I have a node in Firebase getting continually updated with information from a logfile. The node is `lines/` and each child of `lines/` is from a `post()` so it has a unique ID.

When a client first loads, I want to be able to grab the last `X` number of entries. I expect I'll do this with `once()`. From then on, however, I want to use an `on()` with `child_added` so that I get all new data. However, `child_added` gets *all* data stored in the Firebase and, after the initial setup, only want the new stuff.

I see that I can add a `limitToLast()` on the `on()`, but, if I say `limitToLast(1)` and a flood of entries come in, will my app still get all the new entries? Is there some other way to do this?

Answer: 
**You need to include a `timestamp` property and run a query.**

```
// Get the current timestamp
var now = new Date().getTime();
// Create a query that orders by the timestamp
var query = ref.orderByChild('timestamp').startAt(now);
// Listen for the new children added from that point in time
query.on('child_added', function (snap) { 
  console.log(snap.val()
});

// When you add this new item it will fire off the query above
ref.push({ 
  title: "hello", 
  timestamp: Firebase.ServerValue.TIMESTAMP 
});

```

The Firebase SDK has methods for ordering, `orderByChild()` and methods for creating a range `startAt()`. When you combine the two you can limit what comes back from Firebase.
You have the right idea. `child_added` should be called only for the new nodes. Without source code it's hard to tell why you get all the data in your `child_added` event.

You can check the chat demo app to see how they load new chat messages. The use case sounds similar.

<https://github.com/firebase/firechat/blob/master/src/js/firechat.js#L347>