Thomas Hunter II
Thomas Hunter II

Reputation: 5181

How do I get a model from a Backbone.js collection by its id?

In my app, everything I do with data is based on the primary key as the data is stored in the database. I would like to grab a model from a collection based on this key.

Using Collection.at() requires the array index, Collection.getByCid() requires the client ID that backbone randomly generates.

What is the best way to grab the model I want from the collection with the given id value? I figure the worst I could do would be to iterate over each item, .get('id'), and return that one.

Upvotes: 40

Views: 65990

Answers (2)

nikoshr
nikoshr

Reputation: 33334

Take a look at the get method, it may be of some help :)

http://backbonejs.org/#Collection-get

get collection.get(id)
Get a model from a collection, specified by an id, a cid, or by passing in a model.

Upvotes: 63

Joel Peltonen
Joel Peltonen

Reputation: 13402

If your data requires you to use a different kind of key or a set that doesn't mesh well with at(), getByCid() or get(), there is also where(). Something like this might work:

window.lib = new Library;
window.lib.fetch([
    success: function(model, response) {
        console.log(window.lib.where({'BookID':488, 'Rev':2, 'Status':'Active'});
    }
});

Upvotes: 7

Related Questions