A lightweight JS model/collection management library, built on top of Lodash.
bower install collectionizenpm install collectionizevar Things = Collectionize('things');
Things.add({ id: 2, color: 'blue', shape: 'square' });
Things.add({ id: 3, color: 'red', shape: 'circle' });
Things.add({ id: 5, color: 'green', shape: 'polygon' });
Things.add({ id: 6, color: 'blue', shape: 'triangle' });
Things.size();
// 4
Things.search({ color: 'blue' });
// [{ id: 2, color: 'blue', shape: 'square' }, { id: 6, color: 'blue', shape: 'triangle' }]
Things.get({ color: 'blue' });
// [{ id: 2, color: 'blue', shape: 'square' }]
Things.index({ id: 3 });
// 1
Things.update({ id: 3, color: 'yellow' });
// [{ id: 3, color: 'yellow', shape: 'circle' }]Add an object to the collection.
Things.add({ id: 2, color: 'blue', shape: 'square' });
// undefinedFlush out and optionally replace the collection.
Things.flush()Alias for the Lodash find method.
Uses an ID-based index to get a single object. This can be faster than get for larger collections.
Things.getById(123);
// { id: 123, color: 'green', shape: 'triangle' }Increments the property number or sets it to zero if it doesn't exist.
Things.incr({ id: 2 }, 'id');
// undefinedAlias for the Lodash findIndex method.
Returns true if the filtered query returns empty, otherwise returns false.
Things.isEmpty({ color: 'yellow' });
// trueAlias for the Lodash size method.
Change the order of an object in the collection.
Things.move(1, 2);Remove all matching elements from the collection.
// Remove object with id 3
Things.remove({ id: 3 });
// Remove all squares
Things.remove({ shape: 'square' });Alias for the Lodash filter method.
Updates all matching objects by property, or adds object if no matches are found.
// Change color to 'red' for object with id '2'
Things.update({ id: 2, color: 'red' });
// Change all squares to color 'red'
Things.update({ shape: 'square', color: 'red' }, 'shape');
// Change all 'blue' colors to 'green'
Things.update({ color: 'green' }, { color: 'blue' });Searches the ID index for a matching object and updates it, otherwise adds it to the collection. This can be faster than update for larger collections.
// Change color to 'red' for object with id '2'
Things.updateById({ id: 2, color: 'red' });at, each, every, filter, find, findIndex, findLastIndex, first, last, map, max, min, pluck, reduce, reduceRight, reject, sample, size, shuffle, some, sortBy, where
Collectionize simply decorates your collection with these methods, meaning instead of _.filter(Things, query) you would write Things.filter(query).
Decorate the object before it's added to the collection.
Things.on('beforeAdd', function (thing) {
thing.initialized = true;
});Do something after an object has been added to the collection, such as save the new object on the server.
Things.on('added', function (thing) {
$.ajax({ url: '/thing', type: 'POST', data: thing });
});Decorate the object before it's updated.
Things.on('beforeUpdate', function (thing) {
thing.initialized = true;
});Do something after an object has been updated, such as save the new object on the server.
Things.on('updated', function (thing) {
$.ajax({ url: '/thing/' + thing.id, type: 'PUT', data: thing });
});Do something after an object has been removed from the collection.
Things.on('removed', function (thing) {
$.ajax({ url: '/thing/' + thing.id, type: 'DELETE' });
});yarn
yarn testMIT. Copyright © 2017 Andrew Childs.
