Define and attach behaviours to collections
MIT License
Define and attach behaviours to collections.
meteor add zimme:collection-behaviours
The behaviours are split into separate packages, which depend on this package.
zimme:collection-softremovable
This behaviour adds .softRemove()
and .restore()
to collections, which
make it possible to mark documents as removed. It also tracks the time and
user for the last soft remove and restore.
zimme:collection-timestampable
This behaviour timestamps documents on insert and update. It also tracks the user who made the last insert or update.
CollectionBehaviours.define('behaviourName', function(options) {
var collection = this.collection;
// Setup some default options for the behaviour
var defaultOptions = {
exampleOption: "I'm a default value"
};
// Make the behaviour configurable both globally and locally and uses the
// defaults if not configured.
options = _.defaults(options, this.options, defaultOptions);
// Behaviour logic goes here
});
// Attach a behavour using the collection identifier
Meteor.users.attachBehaviour('timestampable');
// Attach a behaviour to a colleciton using CollectionBehaviours
CollectionBehaviours.attach(Meteor.users, 'timestampable');
// Attach multiple behaviours to a collection with default options
CollectionBehaviours.attach(Meteor.users, ['timestampable', 'softremovable']);
// Attach multiple behaviours to a collcetion with custom options
CollectionBehaviours.attach(Meteor.users, {
timestampable: {
createdAt: 'insertedAt',
},
softremovable: {
removedBy: 'deletedBy',
},
});
// Attach a behaviour to multiple collections
CollectionBehaviours.attach([Meteor.users, Posts], 'timestampable');
// Attach multiple behaviours to multiple collections
CollectionBehaviours.attach(
[Meteor.users, Posts],
['timestampable', 'softremovable']
);
// Configure behaviour globally i.e. set you own defaults
CollectionBehaviours.configure('behaviourName', {
exampleOption: "I'm a global value"
});
// Attach behaviour with custom options
Meteor.users.attachBehaviour('behaviourName', {
exampleOption: "I'm a local value"
});
// Attach behaviour with custom options, using CollectionBehaviours
CollectionBehaviours.attach(Meteor.users, 'behaviourName', {
exampleOption: "I'm a local value"
});
Used to defined a new behaviour or overwrite an already defined behaviour.
CollectionBehaviours.define('behaviourName', behaviourFunciton, options);
'behaviourName'
: Required. The name of the behaviour.behaviourFunction
: Required. A Function
that takes options
as anoptions
: Optional. Object
with the options for the behaviour.replace
: Optional. Set to true
to replace a previously defined behaviour.Used to confgure behaviours globally.
// Configure single behaviour
ColectionBehaviours.configure('behavioursName', options);
// Configure multiple behaviours
CollectionBehaviours.configure({
timestampable: {
createdAt: 'insertedAt',
updatedBy: 'modifiedBy'
},
softremovable: {
removed: 'deleted'
}
});
'behaviourName'
: Required.
If set to a String
, 'behaviourName', will configure the named behaviour.
If set to an Object
, where the keys are named behaviours and the values are
the options for the behaviours, will configure those named behaviours.
options
: Optional if behaviourName
is an Object
.
See specific behaviour for available options.
Used to attach behaviour(s) to the collection.
Meteor.users.attachBehaviour(behaviourNameOrFunction, options);
behaviourNameOrFunction
: Required.String
, 'behaviourName'
, will attach the named behaviour.Function
, will attach that function as an anonymous behaviour.Array
of String
/Function
, will attach those named orObject
, where the keys are named behaviours and the values areoptions
: Optional. See specific behaviour for available options.Used to attach behaviour(s) to collection(s).
CollectionBehaviours.attach(ColletionIdentifier, behaviourNameOrFunction, options);
CollectionIdentifier
: Required. The collection or Array
of collectionsbehaviourNameOrFunction
: Required.String
, 'behaviourName'
, will attach the named behaviour.Function
, will attach that function as an anonymous behaviour.Array
of String
/Function
, will attach those named orObject
, where the keys are named behaviours and the values areoptions
: Optional. See specific behaviour for available options.CollectionBehaviours.config
is an alias for CollectionBehaviours.configure
sewdn:collection-behaviours