Sharath Bangera
Sharath Bangera

Reputation: 114

Meteor JS : How to get latest set of data based on the date?

I have a requirement where my db has say some set of records with same timestamp (latest) and i want to get all of them at once, i don't want to get any other data which doesn't belong to that criteria, problem is i will not know the timestamp because it stored in db from outside world.

How do i get only the latest set of data in meteor ? i cant do findOne, as it will bring only 1 latest record, which is wrong in my case.

Meteor.publish("collection1", function() {
  return Collection1.find({}, {sort:{dateTime: -1}});
});

I tried to do above code but it gets all the record and i think it just sort by desc.

Upvotes: 2

Views: 684

Answers (1)

chridam
chridam

Reputation: 103475

Use the findOne() method to get the latest dateTime value that you can then use as the find() query:

// on the server
Meteor.publish("collection1", function() {
    var latest = Collection1.findOne({}, {"sort":{"dateTime": -1}}).dateTime;
    return Collection1.find({"dateTime": latest});
});

// on the client
Meteor.subscribe("collection1");
Collection1.find().fetch();

The above approach makes your Meteor app scalable client-side as the client only subscribes to the data that you only need. This is made possible because the return statement inside the Meteor.publish function can only return documents that have the latest dateTime value. This way, you'll avoid overloading the browser's memory no matter how big your server-side database is.

Upvotes: 1

Related Questions