Commit Graph

159 Commits

Author SHA1 Message Date
Patrick Perini e63d15aeb5 addressing #603 2015-05-22 13:42:34 -07:00
Dmitry Manannikov 91b04655cd Fix ReferenceError: definition is not defined
occure when try to delete object in has one relation, but object not created yet
2015-05-22 00:37:27 +03:00
Raymond Feng be38cb3a6f Fix comments 2015-05-18 09:34:25 -07:00
Raymond Feng 93a0342099 Add an optional `options` argument to relation methods 2015-05-16 11:52:17 -07:00
ningsuhen 7861c08e5a add test case for hasmanythrough bi-drectional relations 2015-04-25 01:32:33 +05:30
ningsuhen 9806feb397 Fix for bug - https://github.com/strongloop/loopback-datasource-juggler/issues/571 2015-04-24 15:22:50 +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 17c8576097 Save parent model of embedded relations 2015-04-01 16:59:21 +02:00
Miroslav Bajtoš 5d8b3323ad Remove all usages of lodash.
This commit is dropping lodash in favour of hand-written implementation
based on ES5 Array methods. As a result, the size of the (unminified)
loopback browser bundle is decreased by approx 360KB.
2015-03-26 09:33:48 +01:00
Raymond Feng 58e7c4e90b Merge pull request #534 from fabien/fix/embeds-many-destroy-all
Properly support embedsMany destroyAll
2015-03-24 09:58:02 -07:00
Raymond Feng 5e0451eef0 Merge pull request #443 from clarkorz/fix/findOrCreate-ThroughModel
Always use findOrCreate when creating a through model
2015-03-24 09:56:07 -07:00
Fabien Franzen aa5943f6b0 Properly support embedsMany destroyAll 2015-03-24 15:39:55 +01:00
Fabien Franzen 73f4a1bbe6 Enable more CRUD remoting methods for embedsOne 2015-03-21 16:23:46 +01:00
Clark Wang 09ee38d613 use findOrCreate for HasManyThrough#create
see strongloop/loopback-connector-mongodb#92

Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-03-21 11:49:28 +08:00
Fabien Franzen 54781f376e Enable custom methods on singular relations 2015-03-20 18:15:58 +01:00
Miroslav Bajtoš 52e78ff5ae relation-definition: remove trailing whitespace 2015-02-24 11:36:13 +01:00
Raymond Feng e659e2f603 Fix JS style issues 2015-02-20 14:57:48 -08:00
Bryan Clark 98fcf6b52c use lodash to update the findBelongsTo which now returns an array of matches 2015-02-16 15:36:51 -08:00
Clark Wang 09f7c92cbe use findOrCreate in hasOne#create
So hasOne#create could take advantage from optimized findOrCreate,
which can avoid multiple creation among concurrent requests.

Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-02-04 14:54:28 +08:00
Raymond Feng e46bd0cdb5 Fix hasOne remoting 2015-01-29 23:26:11 -08:00
Fabien Franzen a08ef823be Supply target to applyProperties function 2015-01-26 19:09:29 +01:00
Clark Wang 83c3a17f87 support embeds data for belongsTo relation
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-01-19 22:56:09 +08:00
Raymond Feng 4aeb831bd5 Merge pull request #358 from clarkorz/fix/beforeCreate-belongsTo
fix recursive calls if create belongsTo model in beforeCreate hook
2015-01-14 14:42:29 -08:00
Raymond Feng d92905d53e Merge pull request #360 from clarkorz/fix/embedsOne-errors
fix embedsOne error when embed instance is undefined or null
2014-12-03 15:35:18 -08:00
Clark Wang 9d2e6516c3 fix embedsOne error when embed instance is undefined or null
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-11-28 13:45:47 +08:00
Clark Wang 40f03f084b fix recursive calls if create belongsTo model in beforeCreate hook
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-11-24 19:20:38 +08:00
Fabien Franzen 77028b07f8 Be explicit: set RelationDefinition multiple flag 2014-11-24 10:31:28 +01:00
Clark Wang a9cc1c38df Allow hasOne relation to have a scope option
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-11-20 19:27:04 +08:00
Raymond Feng ba29669e0d Merge branch 'fix/350-create-batch-hasmany-relation' of github.com:BuddyHOPP/loopback-datasource-juggler into BuddyHOPP-fix/350-create-batch-hasmany-relation 2014-11-13 12:50:21 -08:00
bitmage d11eacffc6 handle relationship create with [array] 2014-11-11 14:48:34 -07:00
Alex Voitau 5c2468c4ef #350: Creating a batch via hasMany relation is failing. Added handling of array argument. 2014-11-07 18:01:18 -08:00
Pandaiolo 9eaeb9e399 Fix HasOne PK on modelFrom instead of modelTo 2014-10-29 12:06:05 +01:00
Fabien Franzen 5662d9f0c2 Merge pull request #329 from fabien/feature/include-scope
Enable include scope for belongsTo
2014-10-15 18:08:42 +02:00
Fabien Franzen 55d116ec3f Enable include scope for belongsTo 2014-10-14 22:47:59 +02:00
Fabien Franzen 58a6c924b3 Call relation methods in the right context
Before this change, it was impossible to override 'build' and other
(custom) relation/scope methods; only the original prototype method was
ever called.
2014-10-12 22:00:13 +02:00
Fabien Franzen 610866bd7c Extract mergeQuery and setScopeValuesFromWhere
Related to #274 - in preparation of default scope
2014-10-09 18:13:40 +02:00
Fabien Franzen 7f155966ab Fix to handle new isNewRecord implementation 2014-09-13 00:03:08 +02:00
Raymond Feng 3655107334 Merge pull request #295 from fabien/fix/embeds-many
Various improvements to embedded relations
2014-09-12 10:31:49 -07:00
Raymond Feng af40505703 Merge pull request #290 from fabien/feature/enforce-id
Enforce id (prevent user-set value), fix isNewRecord
2014-09-12 10:31:10 -07:00
Raymond Feng 6903253471 Merge pull request #288 from fabien/fix/relation-tests
Test sync (cached) relation getters
2014-09-12 10:29:42 -07:00
Fabien Franzen e441924fa3 Allow embedsOne to use auto-generated id (from connector)
If the connector has a `generateId` method - like Transient - it can be
used to set the id (when the property has been set to `generated:
true`).
2014-09-07 13:24:05 +02:00
Fabien Franzen 21e1083e88 Implemented persistent: true option for embedsOne 2014-09-07 13:10:23 +02:00
Fabien Franzen 95764232b9 Introduce embedsMany persistent: true option
When set, instead of only embedding the model (on creation) it will be
persisted first, and subsequently embedded.
2014-09-07 12:59:47 +02:00
Fabien Franzen ef816d490a More tests for embedsMany with persistent model 2014-09-07 12:44:45 +02:00
Fabien Franzen 4c6f35d23d Only check id as part of embedsMany relation 2014-09-07 12:17:42 +02:00
Raymond Feng f9ce6c248d Merge pull request #287 from fabien/fix/tiny
Export RelationClasses
2014-09-05 09:18:09 -07:00
Fabien Franzen d8cafd0c84 Tiny fixes 2014-09-05 17:28:50 +02:00
Fabien Franzen b4144598bf DAO save() now uses isNewRecord() 2014-09-05 17:22:14 +02:00
Fabien Franzen 433b89a78a embedsMany - implement sync scope getter 2014-09-04 21:51:59 +02:00
Fabien Franzen 41e0efb2b0 Export RelationClasses
Without this being exported, it was impossible to define custom
relation types. However, there are still limitations - not all helper
methods are public to really handle this scenario.
2014-09-04 21:04:55 +02:00