Commit Graph

54 Commits

Author SHA1 Message Date
ningsuhen 9a7f13ff0f Add support for merging include filters 2015-04-25 01:59:39 +05:30
Partap Davis 29eb3434c7 Promisify model relation methods
When a callback is omitted from a method on a model relation that
supports promises, return that promise.  This includes all the standard
DAO methods, as well as any user-defined methods that return promises.

e.g.:
mylist.todos.create({name: 'Item 1'}) // returns Promise

This API will use native ES6 promises if available.  If not available,
or to force the use of another Promise library, you must assign the
global.Promise object.

e.g.:
global.Promise = require('bluebird')

Relations affected:

- BelongsTo
- HasOne
- HasMany
- HasManyThrough
- HasAndBelongsToMany
- ReferencesMany
- EmbedsOne

Exceptions:

The EmbedsMany relation has not been promisified, because most of the
methods return synchronous values.

The base relation getter method [e.g.: mylist.todos()] has not been
promisified, due to its default caching behavior.

New Methods:

- getAsync(condition, cb)

A new method "getAsync()" has been added to all relations except
EmbedsMany, which always fetches from the datasource rather than from
the cache.  It takes an optional "where" condition (except for HasOne
and BelongsTo) and an optional callback.  If the callback is omitted,
a Promise is returned.
2015-04-07 11:41:07 +02:00
Fabien Franzen 7e55ef18f8 Implement scope.updateAll 2015-03-28 21:25:24 +01:00
Fabien Franzen aa5943f6b0 Properly support embedsMany destroyAll 2015-03-24 15:39:55 +01:00
Fabien Franzen 8199767a8a Implement scope.findOne 2015-03-21 13:44:06 +01:00
Fabien Franzen 34acc6c50a Implement scope.findById 2015-03-20 16:37:46 +01:00
Raymond Feng 8042eeb3b1 Make sure inclusion filter is applied to the target model
See https://github.com/strongloop/loopback/issues/1076
2015-02-28 10:53:18 -08:00
Fabien Franzen 610866bd7c Extract mergeQuery and setScopeValuesFromWhere
Related to #274 - in preparation of default scope
2014-10-09 18:13:40 +02:00
Raymond Feng b5cebd75a7 Merge pull request #303 from khashayar/feature/test-improvement
Test improvement, shows _targetClass camelCase bug
2014-09-23 16:37:59 -07:00
Khashayar Hajian c3df513712 Fix camel-case issue where relation is 'hasAndBelongsToMany' #304
Signed-off-by: Khashayar Hajian <me@khashayar.me>
2014-09-19 16:23:39 +02:00
Fabien Franzen 433b89a78a embedsMany - implement sync scope getter 2014-09-04 21:51:59 +02:00
Fabien Franzen 3efe7ab354 Scope method should return cached relation value (sync) 2014-09-04 21:23:24 +02:00
Fabien Franzen 0a9cb72837 Enable dynamic modelTo for scopes
This is especially useful for relations/prototype scopes, as it allows
you to dynamically deduce the target model from the current receiver
(model instance). This is an advanced option that should otherwise have
no effect on the previous/default functionality. Basically, the
targetClass is taken out of the closure and handled by a method called
targetModel now.
2014-08-30 20:58:06 +02:00
Fabien Franzen a4db887493 Implement where arg on scoped count and destroyAll 2014-08-26 14:54:19 +02:00
Raymond Feng 62db2155e4 Merge pull request #212 from offlinehacker/relations_count
add count to relations
2014-08-15 09:37:50 -07:00
Raymond Feng e22389967c Merge pull request #214 from fabien/fix/scope-order
Allow runtime override of scope/relation order query param
2014-08-15 09:25:17 -07:00
Fabien Franzen d7555bfb64 Allow runtime override of scope/relation order query param 2014-08-13 16:24:11 +02:00
Fabien Franzen 710ad35b39 Implement scope.defineMethod/relation.defineMethod 2014-08-13 11:28:23 +02:00
Jaka Hudoklin 0d44cdc573 add count to relations
Signed-off-by: Jaka Hudoklin <jakahudoklin@gmail.com>
2014-08-12 14:44:33 +02:00
Raymond Feng c53dc74d16 Fix a name conflict in scope metadata 2014-08-08 15:52:30 -07:00
Raymond Feng 7fe7bf9b9a Add scope definitions to the model class
See https://github.com/strongloop/loopback/issues/454
2014-08-08 09:01:24 -07:00
Laurent 71398518ff Fix bug when using multiple include keys 2014-08-06 20:40:24 +02:00
Raymond Feng 6239d8fde5 Merge branch 'patch-4' of github.com:lchenay/loopback-datasource-juggler into lchenay-patch-4 2014-07-30 21:34:41 -07:00
Laurent Chenay aaf037fc51 Do not overwrite inclusion but scope them. Needed in relation hasManyThrought 2014-07-28 15:20:04 +02:00
Fabien Franzen 59a957b538 Implemented embedsMany relation 2014-07-27 16:30:45 +02:00
Fabien Franzen 973c96268f Fix scoped destroyAll: only use 'where', not full 'filter' args 2014-07-24 15:55:00 +02:00
Raymond Feng fc710ca55a Merge branch 'master' into 2.0 2014-07-15 17:09:20 -07:00
Fabien Franzen 6aaa3f216e RelationDefinition applyScope/applyMapping
Add the ability to set static/dynamic filtering (where, order, limit,
skip, fields …) and property mapping/transfer (de-normalization) for
hasMany/hasOne.
2014-07-11 15:29:47 +02:00
Raymond Feng 4515491318 Make sure type of the foreign key match the primary key
See https://github.com/strongloop/loopback/issues/353
2014-06-26 23:38:04 -07:00
Raymond Feng 44de2da21f Merge branch 'master' into 2.0 2014-06-20 23:02:37 -07:00
Raymond Feng 1833352238 More clean up for the scope processing 2014-06-19 12:00:49 -07:00
Raymond Feng 046816191d Clean up scope implementation 2014-06-16 10:50:42 -07:00
Ritchie Martori 8849a4b49a !fixup Remove additional remoting 2014-05-20 13:48:23 -07:00
Miroslav Bajtoš d08c6714d8 scope: improve description of shared methods
The description is used by client SDK code-generators like
loopback-angularjs.
2014-04-03 09:19:06 +02:00
Miroslav Bajtoš abf57ff497 scope: add _targetClass to scope property
Store the class of the results returned by a scope find method.
This class is different from the "targetClass" when the relations
is using a third "through" model (e.g. hasAndBelongsToMany).
2014-04-02 19:32:37 +02:00
Raymond Feng cc5975486d Simplify the inclusion processing 2014-03-17 08:40:40 -07:00
Raymond Feng cadacc44bb Create scoped methods for belongsTo and improve docs 2014-03-17 08:40:40 -07:00
Raymond Feng ed7e2e2ada Fix the parameter name 2014-03-04 08:56:16 -08:00
Raymond Feng 24c4381221 Allows scopes to be defined in LDL 2014-03-03 17:16:37 -08:00
Raymond Feng 93c18163c8 Make sure __cachedRelations is not enumerable 2014-01-28 09:57:23 -08:00
Raymond Feng 2b8c1ebaee Reformat the code 2014-01-24 09:09:53 -08:00
Raymond Feng d9d9d82141 Add more comments 2013-12-20 17:49:14 -08:00
Raymond Feng f1773857bb Fix the remote delegation 2013-12-20 17:28:21 -08:00
Raymond Feng 1f965bfedb Fix the remoting method with the current receiver (this) 2013-12-20 14:47:41 -08:00
Raymond Feng 05eae4aa3e Replace all with find to make it consistent 2013-11-18 11:39:07 -08:00
Raymond Feng c3d7fd0f1c Create remote functions for predefined scopes/relations 2013-10-24 20:37:43 -07:00
Raymond Feng fad6ee5e1d Refactor/cleanup the data source juggler implementation
- Add a ModelDefinition class to encapsulate the model schema handling
- Add a Connector class as the base class for connector implementations
- Optimize attachTo and mixin
- Rename some properties/methods
2013-10-01 22:14:21 -07:00
Raymond Feng f71dc8fe39 Set default value 2013-08-28 21:53:55 -07:00
Ritchie Martori 008b406dd7 model.find => model.findById, model.all => model.find 2013-06-24 12:42:58 -07:00
Raymond Feng dd8512bc1f Refactor more functions into mixins 2013-05-27 22:20:43 -07:00