loopback-datasource-juggler/docs/model.md

3.4 KiB

jugglingdb-model(3) - Model methods, features and internals

DESCRIPTION

This section describes common methods of models managed by jugglingdb and explains some model internals, such as data representation, setters, getters and virtual attributes.

DB WRITE METHODS

Database write methods performs hooks and validations. See jugglingdb-hooks(3) and jugglingdb-validations(3) to learn how hooks and validations works.

Model.create([data[, callback]]);

Create instance of Model with given data and save to database. Invoke callback when ready. Callback accepts two arguments: error and model instance.

User.create({name: 'Jared Hanson'}, function(err, user) {
    console.log(user instanceof User);
});

Model.prototype.save([options[, callback]]);

Save instance to database, options is an object {validate: true, throws: false}, it allows to turn off validation (turned on by default) and throw error on validation error (doesn't throws by default).

user.email = 'incorrect email';
user.save({throws: true}, callback); // will throw ValidationError
user.save({validate: false}, callback); // will save incorrect data
user.save(function(err, user) {
    console.log(err); // ValidationError
    console.log(user.errors); // some errors
});

Model.prototype.updateAttributes(data[, callback]);

Save specified attributes database. Invoke callback when ready. Callback accepts two arguments: error and model instance.

user.updateAttributes({
    email: 'new-email@example.com',
    name: 'New Name'
}, callback);

Model.prototype.updateAttribute(key, value[, callback]);

Shortcut for updateAttributes, but for one field, works in the save way as updateAttributes.

user.updateAttribute('email', 'new-email@example.com', callback);

Model.upsert(data, callback)

Update when record with id=data.id found, insert otherwise. Be aware: no setters, validations or hooks applied when use upsert. This is seed-friendly method.

Model.prototype.destroy([callback]);

Delete database record. Invoke callback when ready. Callback accepts two arguments: error and model instance.

model.destroy(function(err) {
    // model instance destroyed
});

Model.destroyAll(callback)

Delete all Model instances from database. Be aware: destroyAll method doesn't perform destroy hooks.

DB READ METHODS

Model.find(id, callback);

Find instance by id. Invoke callback when ready. Callback accepts two arguments: error and model instance.

Model.all([params, ]callback);

Find all instances of Model, matched by query. Fields used for filter and sort should be declared with {index: true} in model definition.

  • param:

    • where: Object { key: val, key2: {gt: 'val2'}}
    • include: String, Object or Array. See AbstractClass.include documentation.
    • order: String
    • limit: Number
    • skip: Number
  • callback: Accepts two arguments:

    • err (null or Error)
    • Array of instances

Model.count([query, ]callback);

Query count of instances stored in database. Optional query param allows to count filtered set of records. Callback called with error and count arguments.

User.count({approved: true}, function(err, count) {
    console.log(count); // count of approved users stored in database
});

ESSENTIALS

Default values

SEE ALSO

jugglingdb-schema(3) jugglingdb-validations(3) jugglingdb-hooks(3) jugglingdb-adapter(3)