Fabien Franzen
a94993c097
Don't enforce strictness if allowExtendedOperators: true (MongoDB)
2015-07-22 17:09:04 +02:00
Fabien Franzen
c7caa0a7c1
Take strict: validate and throw settings into account
2015-07-21 13:33:42 +02:00
Fabien Franzen
8b06a9d39d
Filter attributes when strict: true
2015-07-20 11:59:07 +02:00
Bryan Clark
342bc2f782
prevent upsert overwriting default values with applyDefaultValues option
...
Creates a new applyDefaultValues option on the Model constructor
defaulting to true, the current behaviour.
Updates the dao module to pass `{ applyDefaultValues: false }` to the
Model constructor during the updateOrCreate method when we assume an
update is happening.
2015-07-14 09:08:10 -07:00
Bryan Clark
1066313f3f
use fromDb to deserialize data after save in Memory connector
...
Changes the after `save` callback in the memory connector to use the
`fromDb` method to deserialize the data passed back to upsert and
updateAttributes methods.
2015-07-14 09:08:09 -07:00
Fabien Franzen
6ce47f71b4
Correctly handle validatesUniquenessOf(idName)
2015-07-13 12:56:49 +02:00
Raymond Feng
5dc4042300
Fix object merge
2015-07-10 13:54:29 -07:00
Raymond Feng
6eb18cb2f6
Make sure base property definitions are cloned
...
Sub models sometimes need to customize the properties from the base model.
This change allows each sub model has its own copy of the base property
definition to avoid potential conflicts across multiple sub models of the
same base.
2015-07-10 10:03:51 -07:00
Raymond Feng
eb20eebe95
Fix the regression for date conversion
2015-07-03 09:29:26 -07:00
Fabien Franzen
5290559a42
Don't cache static scope method results #575
2015-07-03 10:35:26 +02:00
Raymond Feng
4206088fbc
Fix the regexp value for like/nlike
2015-07-02 23:22:36 -07:00
Raymond Feng
542afefb1d
Make sure operator/options are honored
2015-07-02 11:27:33 -07:00
Raymond Feng
50ac143cea
Merge pull request #652 from strongloop/feature/fix-objectid-coercion
...
Fix coercion from ObjectID to String
2015-07-02 10:21:03 -07:00
Raymond Feng
506abf134e
Merge pull request #642 from rus0000/rus0000-patch-1-fix-updateOrCreate-transaction
...
Fix updateOrCreate transaction propagation
2015-07-02 10:17:12 -07:00
Raymond Feng
e72a3cac2f
Merge pull request #643 from rus0000/includes-with-transaction-support
...
Includes with transaction support
2015-07-02 10:13:49 -07:00
Raymond Feng
eb6fa410fe
Fix coercion from ObjectID to String
2015-07-01 14:58:14 -07:00
Fabien Franzen
ef2555ce4e
Fix #623 - use actual id order
2015-06-30 20:48:09 +02:00
Miroslav Bajtoš
293240d752
Merge pull request #599 from PradnyaBaviskar/issue-441
...
Add new hook 'loaded'
2015-06-24 16:35:50 +02:00
Rus1
13b9e47e87
Includes with transaction support
2015-06-24 02:08:07 +03:00
Rus1
17cac79b09
Fix updateOrCreate transaction propagation
2015-06-23 19:14:36 +03:00
Rus1
ca8012ba0a
Fix promise chaining in case of error
2015-06-23 19:08:46 +03:00
Pradnya Baviskar
e7430184a9
Promisify 'autoupdate'
2015-06-23 18:02:08 +05:30
Pradnya Baviskar
20cf67d798
Add new hook 'loaded'
2015-06-23 12:04:46 +05:30
Raymond Feng
ef50be563f
Merge pull request #618 from strongloop/feature/fix-lb-967
...
Allow 0 as the FK
2015-06-16 08:55:54 -07:00
Raymond Feng
bbe9cb350c
Merge pull request #626 from walkonsocial/include-issues
...
Fix for issues #622 & #623
2015-06-16 08:55:29 -07:00
Pradnya Baviskar
f4f13a6626
Promisify 'automigrate'
2015-06-16 12:58:21 +05:30
ningsuhen
0d7dcdd043
check object exists before setting __cachedRelations
2015-06-16 11:10:00 +05:30
ningsuhen
052e22ab43
Fix for issues #622 & #623
...
polymorphic hasOne needs separate handling and hasMany->referencesMany has a unique case which is fixed for MongoDB as suggested by @fabien.
2015-06-12 01:55:25 +05:30
Pradnya Baviskar
3b0e77cb0a
Add new hook 'persist'
2015-06-10 16:19:13 +05:30
Raymond Feng
3ee3ba3dcf
Allow 0 as the FK
...
See https://github.com/strongloop/loopback/issues/967
2015-06-08 13:01:16 -07:00
Clark Wang
a283922c28
fix typo
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-06-01 11:28:58 +08:00
Raymond Feng
493d98f66b
Dedupe ids args of inq for include
2015-05-29 10:50:37 -07:00
Raymond Feng
e0e6a0cdbb
Merge pull request #588 from mamboer/master
...
fix issue #587
2015-05-28 14:44:11 -07:00
Raymond Feng
f789e2abfc
Merge pull request #604 from atomic-labs/master
...
addressing #603
2015-05-28 14:35:58 -07:00
Samuel Reed
b73f9f1bd4
Don't silently swallow db errors on validation.
2015-05-28 11:54:01 -05:00
Raymond Feng
46e6ad2fd6
Merge pull request #602 from strongloop/feature/more-tests-for-observers
...
Enhance the apis and add more tests
2015-05-27 11:08:00 -07:00
Raymond Feng
621adf5435
Enhance the apis and add more tests
2015-05-26 10:15:39 -07:00
mamboer
018022e84b
adapt coding style @bajtos
2015-05-26 12:33:56 +08:00
mamboer
69bd7c1233
Merge remote-tracking branch 'upstream/master'
2015-05-26 12:28:11 +08:00
Patrick Perini
e63d15aeb5
addressing #603
2015-05-22 13:42:34 -07:00
Raymond Feng
5977c1f872
Merge pull request #600 from strongloop/feature/fix-lb-1401
...
Fix for https://github.com/strongloop/loopback/issues/1401
2015-05-22 11:40:20 -07:00
Raymond Feng
a028b2644c
Fix for https://github.com/strongloop/loopback/issues/1401
2015-05-22 11:39:37 -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
12dea6e1cb
Merge pull request #598 from strongloop/feature/add-connector-hooks
...
Mix in observer apis to the connector
2015-05-21 10:43:32 -07:00
Raymond Feng
506223885d
Mix in observer apis to the connector
2015-05-20 15:02:44 -07:00
Raymond Feng
966bb56c31
Enhance fieldsToArray to consider strict mode
2015-05-19 22:32:03 -07:00
Raymond Feng
0e04f78637
Make sure promise is returned
2015-05-18 12:02:07 -07:00
Raymond Feng
be38cb3a6f
Fix comments
2015-05-18 09:34:25 -07:00
Raymond Feng
1bd5e74a13
Enable docs
2015-05-18 09:00:49 -07:00
Raymond Feng
93a0342099
Add an optional `options` argument to relation methods
2015-05-16 11:52:17 -07:00
Raymond Feng
9177e07209
Add transaction apis
2015-05-16 11:52:17 -07:00
Raymond Feng
7a48e7801d
Refactor the observer functions into a plugin
2015-05-16 11:52:17 -07:00
Raymond Feng
670a6e740d
Add transaction
2015-05-16 11:52:17 -07:00
Raymond Feng
eac74ad014
Make sure relation scope is applied during include
2015-05-16 11:49:02 -07:00
crandmck
d19001a56e
Updated JSdoc for Datasource constructor
2015-05-14 15:53:34 -07:00
mamboer
5ff3798e8e
enhancement on #588
2015-05-14 09:55:54 +08:00
mamboer
ba68df3ef3
Merge remote-tracking branch 'upstream/master'
2015-05-14 09:26:50 +08:00
Raymond Feng
b5b7bab096
Fix the target id resolution
2015-05-13 16:10:07 -07:00
Raymond Feng
f9bd1544f9
Merge branch 'include-db-call-spike' of https://github.com/walkonsocial/loopback-datasource-juggler into walkonsocial-include-db-call-spike
2015-05-13 13:15:46 -07:00
ningsuhen
d009557a76
DB Call Optimization in relation includes - Fixes #408 & #166
2015-05-14 00:19:43 +05:30
Raymond Feng
5ef444e45d
Conditionally pass options to connector CRUD methods
2015-05-13 09:36:45 -07:00
mamboer
d27b2eb25f
fix issue #587
2015-05-13 13:18:50 +08:00
Fabien Franzen
df7d221f31
Pass-through options from save to create
2015-05-10 10:44:22 +02:00
Miroslav Bajtoš
9bc79d2366
dao: support validateUpsert:false
...
- validateUpsert:true reports validation errors back to the callback
- validateUpsert:false does not call `isValid()` at all
- any other value report validation errors via `console.warn`
2015-05-05 08:24:08 +02:00
Rand McKinney
0b235015f0
Changes to API docs per Dennis
2015-05-04 08:45:17 -07:00
Raymond Feng
3aa90751be
Merge branch 'merge-inclusion' of https://github.com/walkonsocial/loopback-datasource-juggler into walkonsocial-merge-inclusion
2015-04-24 16:12:38 -07:00
Raymond Feng
03a34fd086
Merge branch 'hasmanythrough-inconsitency' of https://github.com/walkonsocial/loopback-datasource-juggler into walkonsocial-hasmanythrough-inconsitency
2015-04-24 16:08:08 -07:00
ningsuhen
9a7f13ff0f
Add support for merging include filters
2015-04-25 01:59:39 +05:30
ningsuhen
7861c08e5a
add test case for hasmanythrough bi-drectional relations
2015-04-25 01:32:33 +05:30
Raymond Feng
c609b6d7ce
Allow leading slash for `path` in model settings
2015-04-24 08:23:13 -07:00
ningsuhen
9806feb397
Fix for bug - https://github.com/strongloop/loopback-datasource-juggler/issues/571
2015-04-24 15:22:50 +05:30
Miroslav Bajtoš
40eecd98c9
validations: treat `NaN` as a blank value
...
When a required number property is set to NaN, for example as a result
of coersion (`Number([1,2,3])`), the "presence" validation now correctly
reports an error.
2015-04-22 19:57:48 +02:00
Raymond Feng
c338c2326d
Merge pull request #561 from strongloop/feature/allow-name-mapper-for-discovery
...
Allow custom name mapping for discovered models
2015-04-22 08:43:09 -07:00
Raymond Feng
1e70678fa7
Allow custom name mapping for discovered models
2015-04-22 08:42:47 -07:00
Miroslav Bajtoš
b642d52fbe
Merge pull request #565 from strongloop/feature/validate-upsert
...
Validate model on updateOrCreate (upsert).
2015-04-17 17:20:55 +02:00
Raymond Feng
988a929577
Extend findById to accept an optional filter object
2015-04-16 09:06:53 -07:00
Miroslav Bajtoš
3df62444d6
Validate model on updateOrCreate (upsert).
...
Fix the implementation of updateOrCreate (a.k.a. upsert) to validate
the model before calling the connector.
In order to preserve backwards compatibility, validation errors are
only logged via console.warn by default.
The correct behaviour, where validation errors fail the updateOrCreate
operation, can be enabled via new model setting "validateUpsert".
2015-04-16 09:09:54 +02:00
Miroslav Bajtoš
99d4c6aa8d
Add new strict mode "validate"
...
When a model is configured with `strict: 'validate'`,
any dynamic properties not included in the schema trigger
a validation error.
2015-04-14 08:16:10 +02:00
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
Raymond Feng
16cc870f57
Merge pull request #544 from strongloop/feature/nesting-doc-query
...
Allow nesting properties to be queried for memory connector
2015-04-02 08:47:10 -07:00
Miroslav Bajtoš
cd7bc46efb
Deprecate property names containing a dot
2015-04-02 09:49:04 +02:00
Miroslav Bajtoš
3a51510119
Code cleanup in lib/dao.js
...
Rename callback argument "result" to "info" to make it consistent
with other places where we use "info" too.
Remove traling whitespace.
2015-04-01 18:25:04 +02:00
Fabien Franzen
17c8576097
Save parent model of embedded relations
2015-04-01 16:59:21 +02:00
Raymond Feng
8d1e782199
Merge pull request #546 from fabien/feature/scope-update-all
...
Implement scope.updateAll
2015-03-30 14:35:47 -07:00
Raymond Feng
44e5ad1fef
Merge pull request #549 from fabien/feature/hookstate-from-options
...
Allow passing in hookState from options
2015-03-30 14:35:34 -07:00
Fabien Franzen
1ab3d74ab5
Pass options in operation hooks context.
2015-03-30 18:03:42 +02:00
Pulkit Singhal
2891b5e5b3
check if id does not exist a bit more explicitly
...
if left as-is, ids with value of zero were treated as non-existent
2015-03-30 09:52:08 -05:00
Miroslav Bajtoš
517ea875ec
Merge pull request #500 from 0angelic0/master
...
Remove and clear Operation Hook observers
2015-03-30 11:26:57 +02:00
Fabien Franzen
7e55ef18f8
Implement scope.updateAll
2015-03-28 21:25:24 +01:00
Raymond Feng
137d096cfb
Allow nesting properties to be queried for memory connector
...
See https://github.com/strongloop/loopback/issues/517
2015-03-27 16:05:12 -07:00
Miroslav Bajtoš
093a307052
Merge pull request #542 from strongloop/feature/default-to-null
...
Add model setting "persistUndefinedAsNull"
2015-03-27 18:39:03 +01:00
Miroslav Bajtoš
9fd4c00225
Add model setting "persistUndefinedAsNull"
...
When the setting "persistUndefinedAsNull" is true,
the model will use `null` instead of `undefined` in
all property values.
- Known optional model properties are set to `null` when no value
was provided.
- When setting model properties, `undefined` is always converted
to `null`. This applies to both known (model-defined) properties
and additional (custom, dynamic) properties.
- The instance method `toObject()` converts `undefined` to `null` too.
Because `toJSON()` calls `toObject()` under the hood, the change
applies to `toJSON()` too.
2015-03-27 18:25:26 +01:00
Raymond Feng
c340f416b1
Merge pull request #539 from fabien/fix/tiny-return-scope
...
Return scope object from DAO.scope
2015-03-27 09:26:50 -07:00
Miroslav Bajtoš
abba2a88d9
Merge pull request #540 from strongloop/fix/update-delete-all-details
...
Code cleanup in updateAll/deleteAll
2015-03-27 08:58:47 +01:00
Miroslav Bajtoš
a70a1b255a
Code cleanup in updateAll/deleteAll
...
Rename the second callback argument to `info` to make its purpose more
clear. Fix jsdoc comments, note that these comments are NOT shown
on http://apidocs.strongloop.com/ .
2015-03-26 19:01:25 +01:00
Fabien Franzen
bbce005d12
Return scope object from DAO.scope
2015-03-26 15:39:26 +01: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
Miroslav Bajtoš
f7dc6fab90
Fix regression in prototype.save
...
ffcaa4e7
added a "data" argument to the callback function, which
shadowed the original data with the data returned by a connector.
Not all connectors are returning a data object though, in which case
the model instance ("this" object) is updated with wrong values.
This commit fixes the problem by renaming the second callback argument
to "unusedData".
2015-03-23 08:34:21 +01:00
Raymond Feng
99396387ee
Merge pull request #525 from fabien/fix/embeds-one-remoting
...
Enable more CRUD remoting methods for embedsOne
2015-03-22 07:56:13 -07:00
Fabien Franzen
73f4a1bbe6
Enable more CRUD remoting methods for embedsOne
2015-03-21 16:23:46 +01:00
Fabien Franzen
8199767a8a
Implement scope.findOne
2015-03-21 13:44:06 +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
Raymond Feng
5d0b745f31
Merge pull request #520 from fabien/feature/scope-find-by-id
...
Implement scope.findById
2015-03-20 12:00:56 -07:00
Raymond Feng
2f0561a7a8
Merge pull request #514 from fabien/feature/relation-methods
...
Enable defineMethod for singular relations
2015-03-20 11:57:45 -07:00
Raymond Feng
4ac227b052
Merge pull request #522 from strongloop/feature/enhance-id-comparison-for-updateAttributes
...
Enhance id comparision for updateAttributes
2015-03-20 11:06:57 -07:00
Raymond Feng
6a40a8a5e5
Enhance id comparision for updateAttributes
...
string/number and MongoDB ObjectID equality are now allowed.
2015-03-20 11:06:24 -07:00
Miroslav Bajtoš
84d538c1ca
Merge pull request #515 from strongloop/feature/isNewInstance
...
Add ctx.isNewInstance for "save" hooks
2015-03-20 18:33:55 +01:00
Fabien Franzen
54781f376e
Enable custom methods on singular relations
2015-03-20 18:15:58 +01:00
Fabien Franzen
34acc6c50a
Implement scope.findById
2015-03-20 16:37:46 +01:00
Miroslav Bajtoš
94e6d893a7
Fix updateAll callback in "transient" connector
...
Fix the implementation to return an object as the result,
that's the expected API since 04f35b3
.
2015-03-20 08:34:58 +01:00
Simon Ho
04f35b31b4
Memory connector returns updated records count
...
The memory connector now includes the number of updated items in its callback
when updating records.
2015-03-19 15:40:14 -07:00
Raymond Feng
a8d8556dcc
Merge pull request #499 from clarkorz/fix/merge-mixins
...
fix #429 Multiple Models can't mixin same class
2015-03-19 13:21:22 -07:00
Miroslav Bajtoš
ffcaa4e76e
Add ctx.isNewInstance for "save" hooks
...
"before save" hooks provide "ctx.isNewInstance" whenever "ctx.instance"
is set. Possible values:
- true for all CREATE operations
- false for all UPDATE operations
- undefined for "prototype.save"
"after save" hooks provide "ctx.isNewInstance" whenever "ctx.instance"
is set. Possible values:
- true after all CREATE operations
- false after all UPDATE operations
- undefined after "updateOrCreate" and "save"
Note: both "updateOrCreate" and "prototype.updateAttributes"
don't provide `ctx.instance` to "before save" hooks, therefore
`ctx.isNewInstance` it not provided either.
2015-03-19 18:05:24 +01:00
Miroslav Bajtoš
d731252941
deleteAll returns number of deleted records
...
The number is returned as `data.ctx` to `cb(null, data)`.
2015-03-19 17:54:22 +01:00
Miroslav Bajtoš
ae3dc3cec2
Merge pull request #510 from strongloop/fix/duplicate-create
...
Reject CREATE with a duplicate id
2015-03-19 17:37:01 +01:00
Raymond Feng
cd1d815936
Use the correct way to iterate over an array
...
See https://github.com/strongloop/loopback-datasource-juggler/issues/512
2015-03-18 08:21:32 -07:00
Raymond Feng
01fb5db550
Merge pull request #509 from dbarbeau/master
...
Enable "between" filter for memory db connector
2015-03-16 10:41:38 -07:00
Miroslav Bajtoš
6f11c2d717
DAO: Fix updateOrCreate to set persisted:true
...
Before this commit, the following code would not work:
Change.updateOrCreate({...}, function(err, ch) {
// somewhere later, modify "ch" and save the changes
ch.save(cb);
});
2015-03-16 18:26:42 +01:00
Miroslav Bajtoš
902772f1af
Reject CREATE with a duplicate id
...
Modify the memory connector to reject requests to create a record
with a duplicate id.
Add a unit-test to verify this behaviour across all connectors.
2015-03-16 18:26:42 +01:00
Raymond Feng
04348a1168
Make sure id properties cannot be changed
2015-03-16 09:25:38 -07:00
Daniel B. Vasquez
9aeaa37b1c
enable between filter for memory db connector
2015-03-16 11:21:04 +01:00
0angelic0
befe30f14a
Add abilities to remove and clear observers - Operation Hooks.
2015-03-11 18:08:35 +07:00
Miroslav Bajtoš
274a5c778a
Remove trailing spaces.
2015-03-11 09:39:16 +01:00
Fabien Franzen
8605da3ac6
Improve instance-level operation hooks
...
"before delete" and "after delete" hooks receive `ctx.instance`
when a single model is being deleted.
"before save" hook receives `ctx.currentInstance` when triggered
by `prototype.updateAttributes()`.
Note that "after save" hook triggered by `prototype.updateAttributes()`
already provides `ctx.instance`.
2015-03-11 09:35:46 +01:00
Clark Wang
90e169c1a6
fix #429 Multiple Models can't mixin same class
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-03-11 16:08:50 +08:00
didikeke
3644b85432
fix foreign key dataType bug
2015-03-11 11:30:40 +08:00
Raymond Feng
159be756ac
Merge pull request #494 from strongloop/feature/allow-submodel-to-hide-base-properties
...
Allow submodel to hide base properties
2015-03-09 13:16:09 -07:00
Fabien Franzen
18b58558cc
Reformat notifyObserversOf context argument
2015-03-05 15:53:34 +01:00
Fabien Franzen
f42859f2e5
Implement operation hooks' context
2015-03-05 11:55:04 +01:00
crandmck
d4b0a26a0e
Improved and corrected API docs
2015-03-04 17:21:25 -08:00
crandmck
e81415ceda
Fix problems in annotations that prvented validateAsync and validate functions from appearing in API docs.
2015-03-03 16:58:19 -08:00
Raymond Feng
33d3239b44
Allow submodel to hide base properties
2015-03-03 10:27:22 -08: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
Miroslav Bajtoš
17a999bfca
Merge pull request #473 from strongloop/feature/deprecate-model-hooks-and-events
...
Deprecate model hooks and events
2015-02-27 19:37:39 +01:00
Miroslav Bajtoš
37d7721e0e
Deprecate DAO events
...
List of deprecated events:
- changed
- deleted
- deletedAll
2015-02-27 17:03:39 +01:00
Miroslav Bajtoš
03daaca9de
Deprecate Model hooks
...
List of deprecated hooks:
- beforeValidate
- afterValidate
- beforeCreate
- afterCreate
- beforeSave
- afterSave
- beforeUpdate
- afterUpdate
- beforeDestroy
- afterDestroy
Also add a lightweight browser version of "depd", because the "depd"
does not support browser and it is not trivial to fix that.
This commits adds a lightweight implementation of depd's "deprecate"
function.
2015-02-27 16:58:24 +01:00
Partap Davis
1e6c453191
Add Promises to DAO
...
When a callback is omitted from a DAO method, return a Promise that
resolves to the value normally passed to the callback of that method.
If a callback is provided, behave normally.
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')
Class methods affected:
- create
- updateOrCreate / upsert
- findOrCreate
- exists
- find
- findOne
- findById
- findByIds
- remove / deleteAll / destroyAll
- removeById / deleteById / destroyById
- count
- update / updateAll
Prototype methods affected:
- save
- delete / remove / destroy
- updateAttribute
- updateAttributes
- reload
Exceptions / edge cases:
- create() used to return the data object that was passed in, even if
no callback was provided. Now, if a callback is provided, it will
return the data object, otherwise it will return a Promise.
- If create() is provided an array of data objects for creation, it
will continue to always return the array. This batch creation mode
does not support promises.
- findOrCreate() has a callback of the form: cb(err, instance, created),
with the extra parameter indicating whether the instance was created
or not. When called with its promise variant, the resolver will
receive a single array parameter: [instance, created]
2015-02-26 13:45:37 -07:00
Raymond Feng
6891da4535
Merge pull request #470 from rudzon/master
...
Enhance updateAll to coerce the data per property definitions
2015-02-24 08:28:39 -08:00
rudzon
dbe9329a37
enhance the coercion for boolean/date types
2015-02-24 13:55:57 +02:00
rudzon
35825f5e53
enhance updateAll to coerce the data per property definitions
2015-02-24 13:53:23 +02: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
Miroslav Bajtoš
ba0f3c1616
Add a new property option `defaultFn`
...
The property allows developers to specify that the default value
should be retrieved via a named function.
Only two built-in functions are supported at the moment:
"guid", "uuid" - generate a new GUID/UUID
"now" - use the current date and time
Support for custom (user-provided) functions is not implemented yet.
2015-02-20 20:08:25 +01:00
Miroslav Bajtoš
c939efe1e7
Merge pull request #445 from PradnyaBaviskar/issue292
...
Add $now as shortcut default value for date property
2015-02-17 19:46:05 +01:00
Miroslav Bajtoš
76ebdcb91b
ModelBaseClass: promise mode for notifyObserversOf
...
Support both promise and callback styles in
ModelBaseClass.notifyObserversOf.
When there is no callback supplied, the method returns a promise that
is resolved (or rejected) with the result.
2015-02-17 18:19:21 +01:00
Miroslav Bajtoš
a2836fbb56
ModelBaseClass: support promise-based observers
...
Allow the observer functions passed to `ModelBaseClass.observe`
to return a promise instead of calling the callback.
2015-02-17 17:31:42 +01: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
Pradnya Baviskar
aba7d0dc10
Add $now as shortcut default value for date property
2015-02-16 11:32:24 +05:30
Miroslav Bajtoš
46ff76dda0
Fix `deleteById(id)` and other test failures
2015-02-13 09:34:40 -08:00
Raymond Feng
cc1791b01d
Merge pull request #423 from clarkorz/hasOne-findOrCreate
...
use findOrCreate in hasOne#create
2015-02-11 20:51:33 -08:00
Raymond Feng
bcbb9c580d
Merge branch 'featrue/support-connector-findOrCreate' of https://github.com/clarkorz/loopback-datasource-juggler into clarkorz-featrue/support-connector-findOrCreate
2015-02-11 20:49:51 -08:00
Raymond Feng
a8f3d21b65
Merge pull request #436 from strongloop/feature/fix-issue-293
...
Make sure base properties/settings are merged into the submodel
2015-02-11 16:13:00 -08:00
Raymond Feng
9bac813f59
Merge pull request #435 from strongloop/feature/add-options-to-crud-methods
...
Add an optional `options` argument to all CRUD methods
2015-02-11 10:31:18 -08:00
Raymond Feng
760ac97902
Add an optional `options` argument to all CRUD methods
2015-02-10 23:57:05 -08:00
Raymond Feng
ecf84bf802
Enhance the coercion for boolean/date types
...
See https://github.com/strongloop/loopback-connector-mongodb/issues/90
2015-02-08 10:54:42 -08:00
Raymond Feng
cd2bd34619
Make sure base properties/settings are merged into the submodel
...
See https://github.com/strongloop/loopback-datasource-juggler/issues/293
2015-02-07 11:15:28 -08:00
Clark Wang
0bef56efc0
support optimized findOrCreate
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
remove undefined for creating data in findOrCreate
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
getLastGeneratedUid instead of force an id
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-02-07 10:23:04 +08:00
Raymond Feng
e9c966227d
Merge pull request #420 from aol-nnov/fkCustomDbType
...
Create model foreign key matching type of opposite part of relation (even if it has a custom field type)
2015-02-05 10:28:04 -08:00
Miroslav Bajtoš
2e2e01cc5c
Merge pull request #430 from PradnyaBaviskar/issue709
...
Return 400 when client provides an incorrect value
2015-02-05 12:42:54 +01:00
Pradnya Baviskar
be37fb4388
Return 400 when client provides an incorrect value
2015-02-05 16:58:42 +05:30
Miroslav Bajtoš
4889443ed0
Merge pull request #422 from strongloop/feature/fix-mongodb-issue-87
...
Remove undefined properties for create
2015-02-04 19:11:02 +01:00
Raymond Feng
79eabf3cf9
Fix typo
2015-02-04 08:30:13 -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
9769df2c91
Remove undefined properties for create
...
See https://github.com/strongloop/loopback-connector-mongodb/issues/87
2015-02-03 08:35:18 -08:00
Andrey Loukhnov
e68ecb461a
Create model foreign key matching type of opposite part of relation (even if it has a custom field type)
2015-02-03 13:13:00 +03:00
Miroslav Bajtoš
9298919ec0
Merge pull request #418 from strongloop/feature/rename-query-to-access-hook
...
Rename hook "query" to "access"
2015-02-02 19:04:47 +01:00
Raymond Feng
4793546353
Merge pull request #400 from chrene/protected
...
Add support for protected properties.
2015-02-02 09:04:51 -08:00
Raymond Feng
bba1ce0768
Merge pull request #405 from clarkorz/fix/id-for-compositeIds
...
fix id property for composite ids
2015-02-02 08:59:40 -08:00
Raymond Feng
fd97b06bcc
Merge pull request #416 from strongloop/feature/fix-lb-1058
...
Fix id type issue for update
2015-02-02 08:58:10 -08:00
Raymond Feng
4afb2385a9
Fix id type issue for update
...
https://github.com/strongloop/loopback/issues/1058
2015-02-02 08:44:36 -08:00
Miroslav Bajtoš
fcaf19a1d2
Rename hook "query" to "access"
...
The name "query" creates incorrect assumption that hook handlers
may return the result of a query to bypass database access.
That is far from true, since this hook is called also by methods
like `deleteAll` or `updateAll` that don't perform any SELECT query.
2015-02-02 10:41:18 +01:00
Miroslav Bajtoš
370966df99
Implement intent hook `before delete`
...
Methods `DAO.deleteAll` and `DAO.prototype.delete` now invoke
`before delete` hook too. The hook receives `ctx.where` describing
models to be deleted.
2015-02-02 09:13:31 +01:00
Miroslav Bajtoš
842e543bf7
Merge pull request #415 from strongloop/fix/regression-in-dao-save
...
Fix regression in `.save()` from 1fd6eff
2015-01-30 18:28:10 +01:00
Raymond Feng
e41b2d9393
Merge pull request #414 from strongloop/feature/fix-hasone-remoting
...
Fix hasOne remoting
2015-01-30 08:23:46 -08:00
Miroslav Bajtoš
31b9da7d44
Remove redundant `.toObject()` call from `upsert`
2015-01-30 11:31:30 +01:00
Miroslav Bajtoš
5cfbfe3a19
Fix regression in `.save()` from 1fd6eff1
...
The commit 1fd6eff1
(intent-based hooks) introduced a subtle regression
in `.save()` method where dynamic property setters were invoked twice.
This commit fixes the problem by moving pre-save data normalization
into `before save` callback.
2015-01-30 11:31:12 +01:00
Raymond Feng
e46bd0cdb5
Fix hasOne remoting
2015-01-29 23:26:11 -08:00
Raymond Feng
7d42202d40
Make sure batch create calls back with correct data
...
See https://github.com/strongloop/loopback/issues/1031
2015-01-29 11:52:39 -08:00
Miroslav Bajtoš
1fd6eff10f
Intent-based hooks for persistence
...
This patch introduces a new API for "intent-based" hooks. These hooks
are not tied to a particular method (e.g. "find" or "update"). Instead,
they are triggered from all methods that execute a particular "intent".
The consumer API is very simple, there is a new method
Model.observe(name, observer), where the observer is function
observer(context, callback).
Observers are inherited by child models and it is possible to register
multiple observers for the same hook.
List of hooks:
- query
- before save
- after save
- after delete
2015-01-29 08:43:52 +01:00
Miroslav Bajtoš
b3d07ebbe8
ModelBaseClass: implement async observe/notify
...
Implement infrastructure for intent-based hooks.
2015-01-29 08:43:50 +01:00
James Billingham
28f3f5d9f8
Fixed nullCheck in validations to correct behavior when dealing with undefined attributes
2015-01-27 22:18:47 +00:00
Fabien Franzen
a08ef823be
Supply target to applyProperties function
2015-01-26 19:09:29 +01:00
Clark Wang
2e9e2dd192
fix id property for composite ids
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-01-22 10:39:47 +08:00
Clark Wang
c37de7f008
fix id properties should sort by its index
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-01-21 20:16:34 +08:00
Christian Enevoldsen
7372fafc97
Fixed typos and logic for protected properties
2015-01-20 21:32:31 +01:00
Christian Enevoldsen
d39f539413
adds support for protected properties.
2015-01-20 20:58:52 +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
Miroslav Bajtoš
2e98c51571
Fix detection of `util.inspect` version
...
Improve the detection to work in browser too. This fixes a regression
introduced in e4fc3878
.
2015-01-15 08:45:52 +01: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
f1bdf50e2a
Merge pull request #387 from fabien/fix/coerce
...
Don't coerce nested objects into Model instances
2015-01-14 11:43:38 -08:00
Raymond Feng
a2b5d6410a
Merge pull request #389 from strongloop/feature/include-value-in-validation-error-message
...
Include property value in the error message
2015-01-14 11:37:10 -08:00
Raymond Feng
2e08d48ad3
Merge pull request #390 from r3dm/fix/call-idNames
...
Fix virtual id get function.
2015-01-14 11:31:55 -08:00
Dallon Feldner
e7fedc2926
Fix for #369
...
Remember, folks, `typeof null === 'object'`.
2015-01-12 17:38:21 -06:00
Berkeley Martinez
3fac41985b
Fix virtual id get function.
2015-01-12 08:43:55 -08:00
Miroslav Bajtoš
e4fc38788f
Fix Model.prototype.inspect
...
Return the raw object data when running on Node v0.11.14+
That way all `inspect` options are always preserved.
When running on older version:
- Honour the depth argument passed to the custom `inspect` function.
- Disable color output, becase there is now way how to detect whether
colors were enabled or disabled by the top-level caller.
2015-01-12 17:12:18 +01:00
Miroslav Bajtoš
9b759c95ac
Include property value in the error message
...
When building a list of errors for `ValidationError.message`, include
the values of invalid properties too.
In order to keep the message reasonably short, the values are truncated
at approx 32 characters.
2015-01-12 17:12:18 +01:00
Rand McKinney
2270ba4db4
Update datasource.js
...
Small fix to JSdoc
2015-01-08 15:30:17 -08:00
Fabien Franzen
a19b778cbd
Change Model to BaseModel for clarity
2015-01-08 15:44:28 +01:00
Fabien Franzen
a24b222a72
Don't coerce nested objects into Model instances
...
For queries, this is undesirable. It also affects
loopback-connector-mongodb's ability to perform nested queries (it
expects plain objects to work correctly, and to allow $elemMatch for
example).
2015-01-08 15:34:04 +01:00
Raymond Feng
eac7526e80
Merge pull request #379 from cvette/memory-order-fix
...
fix sorting of undefined values in memory connector
2015-01-06 09:39:49 -08:00
Clark Wang
ce2b580ccd
add a flag to callback of findOrCreate to indicate find or create
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-12-25 22:19:15 +08:00
Christian Vette
e45407256e
fix sorting of undefined values with multiple columns
2014-12-22 21:06:01 +01:00
cvette
31c7973763
code style
2014-12-22 18:54:56 +01:00
cvette
a6b8ca70af
fix sorting with undefined in memory connector
2014-12-22 18:45:39 +01:00
Ritchie Martori
efe4601fdb
Merge pull request #370 from simoami/master
...
Fixed the haversine formula to calculate distance between 2 points
2014-12-18 15:08:42 -08:00
Simo Moujami
e1a60f146e
Added support for inline parameters like: new GeoPoint(-34, 150)
2014-12-18 10:47:06 -05:00
Clark Wang
6fa8969912
fix default include in default scope fails findById
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-12-11 15:14:35 +08:00
Simo Moujami
8ba0c3f87d
Additional formatting
2014-12-10 19:38:39 -05:00
Simo Moujami
beaa97f6f4
Fixed constructor parameters and added bdd tests for constructor validation
2014-12-10 19:36:02 -05:00
Simo Moujami
45fb633c3a
renamed intermediary variable
2014-12-10 17:08:56 -05:00
Simo Moujami
ed5aeb1d2d
Fixed the haversine formula to calculate distance between 2 points properly
2014-12-10 16:30:07 -05: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
Raymond Feng
c51d1e9a08
Merge pull request #354 from clarkorz/fix/skip-validation
...
fix skipping async validator will always fail if condition is un-fulfilled
2014-12-03 15:22:57 -08:00
Raymond Feng
6914733a41
Allow more flavors of nullable values from DB discovery
2014-12-03 15:11:27 -08:00
Raymond Feng
48e8ebed7b
Fix a typo
2014-12-03 15:11:27 -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
Clark Wang
973dd33d63
fix skipping async validator will always fail if condition is un-fulfilled
...
If the validator configured with `{async:true}` option and `if/unless`
condition, validator should be skipped when the condition is un-fulfilled,
so the validator should be pass.
But currently, when skipping the validator, it calls `done(true)` which
accepts a `fail` flag as a param, this will fail the entire validation.
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-11-19 21:50:08 +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
Raymond Feng
14dcfb61be
Add support for multiple includes that use relation syntax
2014-11-04 20:45:25 -08:00
Raymond Feng
5cd9e88ab2
Merge pull request #334 from pandaiolo/fix/has-one-pk
...
Fix for HasOne relation with non-standard id
2014-10-30 14:26:13 -07:00
Raymond Feng
11963ea12a
Merge pull request #338 from fabien/fix/fields-vs-defaults
...
Don't apply defaults when fields are specified
2014-10-30 14:11:51 -07:00
Pandaiolo
9eaeb9e399
Fix HasOne PK on modelFrom instead of modelTo
2014-10-29 12:06:05 +01:00
Fabien Franzen
4e20128945
Tiny fix: default __persisted to false
2014-10-19 18:52:18 +02:00
Fabien Franzen
e7a108efdb
Don't apply defaults when fields are specified
2014-10-19 18:47:27 +02:00
Raymond Feng
455743167a
Fix the automigrate issue
...
See https://github.com/strongloop/loopback-example-relations-basic/issues/6
2014-10-16 12:04:16 -07: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
ded292d79a
Merge pull request #327 from fabien/fix/call-scope-method
...
Call relation methods in the right context
2014-10-15 18:08:10 +02:00
Fabien Franzen
55d116ec3f
Enable include scope for belongsTo
2014-10-14 22:47:59 +02:00
Raymond Feng
07993d2e1f
Merge pull request #324 from fabien/feature/include-scope
...
Include scope
2014-10-13 08:33:26 -07: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
Miroslav Bajtoš
14d178bf69
Don't inherit settings.base when extending a model
...
Fix the bug in `ModelClass.extend` where the `base` option used
in the new class was inherited from ModelClass. As a result
the extended model was incorrectly based on ModelClass's parent.
Modify `modelBuilder.define` to normalize the property name storing
the name of the base model to `settings.base`.
2014-10-10 18:35:18 +02:00
Fabien Franzen
8d6e3adaab
Allow include syntax without scope param
2014-10-10 17:17:36 +02:00
Fabien Franzen
771d9505cc
Allow 'rel' and 'relation'
2014-10-10 14:33:26 +02:00
Fabien Franzen
0c28ccedac
Refactored inclusion
...
The syntax is now consistent, regardless of using [] or {} for the
include param.
2014-10-10 14:24:25 +02:00
Fabien Franzen
ca0b3399c8
Implement include scopes
2014-10-10 12:28:39 +02:00
Fabien Franzen
0e49dc94ec
Allow `attributes` as an alias for `properties` (for LDL)
2014-10-09 18:14:04 +02:00
Fabien Franzen
ec05d0b5a8
Cleanup, consistency: allow properties to be a function
...
Also, pass along the current instance, for any instance method as a
context (save, updateAttributes).
2014-10-09 18:14:04 +02:00
Fabien Franzen
beeb7c46c9
applyProperties => properties (object/false)
2014-10-09 18:14:04 +02:00
Fabien Franzen
49e2b8b8dc
Allow default scope to be a function
2014-10-09 18:14:04 +02:00
Fabien Franzen
b136a8fce7
Full test CRUD suite for default scope
2014-10-09 18:14:04 +02:00
Fabien Franzen
ad55681d69
Properly reset Memory connector cache on automigrate
2014-10-09 18:13:58 +02:00
Fabien Franzen
8352ed3afc
Implemented collection setting for Memory connector
2014-10-09 18:13:57 +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
Raymond Feng
43e0f0f6fa
Merge pull request #301 from strongloop/feature/allow-base-for-discovery
...
Tidy up model building from data sources
2014-09-23 16:38:17 -07: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
7f155966ab
Fix to handle new isNewRecord implementation
2014-09-13 00:03:08 +02:00
Raymond Feng
fe74c8019c
Tidy up model building from data sources
...
See https://github.com/strongloop/loopback/issues/560
2014-09-12 14:25:35 -07: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
a66e612c87
Fix multi-property validation definitions
...
Fixes #291 , as introduced by me ...
https://github.com/strongloop/loopback-datasource-juggler/commit/6fae8c7
27759256157bf7ccd82e04ee372a59088
2014-09-05 18:00:11 +02: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
fafe51833b
More fixes/tests
2014-09-05 17:09:23 +02:00
Fabien Franzen
aebf5e9e6b
Enforce id (prevent user-set value), fix isNewRecord
2014-09-05 16:35:01 +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
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
Raymond Feng
9a44d11e8e
Merge pull request #266 from strongloop/feature/fix-issue-265
...
Add neq operator support for memory connector
2014-09-04 10:30:08 -07:00
Raymond Feng
057d39d5bb
Simplify the id lookup
2014-09-04 09:32:38 -07:00
Fabien Franzen
72930bf20b
Re-use modelBuilder - correctly fixes lookup
2014-09-04 17:54:42 +02:00
Fabien Franzen
2c0ffee2d3
Polymorphic lookup from all registered dataSources
...
Polymorphic model lookup was previously limited to the same dataSource
as the modelFrom model, which turns out to be too restrictive. This was
uncovered by the use of a Transient model, not being able to lookup a
PersistedModel.
2014-09-04 17:31:53 +02:00
Fabien Franzen
07dbbd4224
Fix #283
2014-09-04 15:37:48 +02:00
Raymond Feng
b22dae3c7a
Merge pull request #281 from clarkorz/fix/hasManyThrough-custom-relation-name
...
Allows the belongsTo relations in through model to have custom name
2014-09-03 08:14:59 -07:00
Clark Wang
74ad6522e7
tidy codes
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-03 21:56:48 +08:00
Clark Wang
1393bd0759
Refector tests and codes
...
1. remove error
2. prune tests
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-03 21:51:21 +08:00
Clark Wang
b6f2026493
Refactor tests and codes
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-03 19:58:39 +08:00
Raymond Feng
cf3128467c
Merge pull request #275 from clarkorz/feature/add-with-through-data
...
Allow to add connection with through data for HasManyThrough relation
2014-09-02 22:44:01 -07:00
Clark Wang
26547f8461
Refactor codes into same if condition
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-03 12:31:09 +08:00
Clark Wang
cb2aeb96fb
Fix hasMany through can't custom relation name
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-03 11:04:58 +08:00
Raymond Feng
a2858d0499
Merge pull request #277 from clarkorz/fix/through-params
...
Fix options for hasManyThrough doesn't apply
2014-09-02 09:18:39 -07:00
Raymond Feng
6020436063
Added a test case for neq
2014-09-02 08:36:37 -07:00
Clark Wang
4d5f3835bb
Fix typo of keyThrough and get from params
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-02 21:57:24 +08:00
Clark Wang
0cbc15c631
Remove unnecessary console.log
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-02 12:55:52 +08:00
Clark Wang
4b70f2498f
Fix options for hasManyThrough doesn't apply
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-01 23:59:52 +08:00
Clark Wang
28ac561d63
revert eof
2014-09-01 14:09:38 +08:00
Clark Wang
e47a25c1f2
Revert leading spaces
2014-09-01 14:05:23 +08:00
Clark Wang
770cc7eda8
revert change to ReferencesMany.prototype.add
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-01 13:35:34 +08:00
Clark Wang
86045d4792
add jsdoc and fix add data to referencesMany.add
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-01 09:54:55 +08:00
Raymond Feng
f9a26bcb28
Merge pull request #270 from fabien/feature/dynamic-scope-modelTo
...
Enable dynamic modelTo for scopes
2014-08-31 08:39:14 -07:00
Raymond Feng
97827db59d
Merge pull request #268 from fabien/feature/transient-model
...
Transient connector implementation
2014-08-31 08:37:26 -07:00
Raymond Feng
6527bd0605
Merge pull request #259 from fabien/fix/refactor-validations
...
Validations configuration as object
2014-08-31 08:37:03 -07:00
Raymond Feng
14dfbb763d
Merge pull request #272 from clarkorz/fix/polymorphicName-var-scope
...
fix polymorphicName var scope
2014-08-31 08:36:22 -07:00
Clark Wang
565b85555c
Allow to add connection with through data for HasManyThrough relation
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-08-31 21:40:18 +08:00
Clark Wang
d43044c766
fix polymorphicName var scope
...
see https://github.com/strongloop/loopback-datasource-juggler/issues/271
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-08-31 19:57:37 +08:00
Fabien Franzen
3f517a4c0a
Reset json when building model definition
2014-08-31 12:17:53 +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
f31a9b13be
Updated embedded relations to use transient connector
...
embedsMany will now use a connector's generated method, when defined.
Also, the id property type is now inferred correctly, making the autoId
option obsolete. However, a new option, forceId, can be set to enforce
the use of auto-generated ids, preventing any explicitly (user-)set id
values.
2014-08-30 11:43:36 +02:00
Fabien Franzen
bd9895ebd6
Implemented Transient connector
2014-08-30 10:53:10 +02:00
Fabien Franzen
170dc661f4
Fix error messages, should be lowercase
2014-08-29 21:30:42 +02:00
Raymond Feng
e9f00fbd8b
Add neq operator support for memory connector
...
See https://github.com/strongloop/loopback-datasource-juggler/issues/265
2014-08-29 08:45:45 -07:00
Raymond Feng
32313c1df9
Make sure timeout handle is cleared
2014-08-27 09:42:16 -07:00
Raymond Feng
fde5b426e4
Make sure error events are emitted by data source
2014-08-27 09:14:17 -07:00
Fabien Franzen
6fae8c7277
Remove iteration of config args
...
Fixes #154 - args should only contain the property name at that point,
not loop over it.
2014-08-26 18:01:23 +02:00
Fabien Franzen
86ea107550
Validations configuration as object
...
Previously validations were appended to an array when configured. The
format was cumbersome, and led to issues. This refactors the
configuration into an object, as a property of the Model.
Note that if no validations have been configured, this property is
currently `undefined`.
2014-08-26 17:51:01 +02:00
Fabien Franzen
73330113ae
Applied Coobaha's PR fix - prevents undefined values
2014-08-26 17:15:07 +02:00
Fabien Franzen
bed97a75cb
Expose validation metadata
...
The new Validatable.validations mixin method returns the validations as
an object
indexed by property name.
2014-08-26 16:56:09 +02:00
Fabien Franzen
a4db887493
Implement where arg on scoped count and destroyAll
2014-08-26 14:54:19 +02:00
Fabien Franzen
b27fd6527e
Use the correct dataSource for modelFrom/modelTo
2014-08-22 21:38:28 +02:00
Raymond Feng
ce12db3e45
Merge pull request #250 from offlinehacker/embedsMany_deleted
...
Emit deleted event on delete for embedsMany relations
2014-08-22 11:05:21 -07:00
Raymond Feng
0f3e7d50bd
Merge pull request #239 from strongloop/feature/add-ping
...
Add ping() to test connections
2014-08-22 09:30:43 -07:00
Jaka Hudoklin
000c380a48
Emit deleted event on delete for embedsMany relations
...
Signed-off-by: Jaka Hudoklin <jakahudoklin@gmail.com>
2014-08-22 16:02:01 +02:00
Raymond Feng
fcd8ed984c
Make sure falsy value is kept for properties not predefined
2014-08-21 13:47:09 -07:00
Fabien Franzen
3f0380296a
Fix side-effects of PR #237 - see #242
2014-08-21 10:44:55 +02:00
Raymond Feng
3875c561e0
Add ping() to test connections
2014-08-20 16:31:23 -07:00
Raymond Feng
a43bed1f1b
Merge branch 'feature/to-one-update' of github.com:fabien/loopback-datasource-juggler into fabien-feature/to-one-update
2014-08-20 14:30:38 -07:00
Raymond Feng
f5839fb6ae
Merge branch 'feature/embeds-one' of github.com:fabien/loopback-datasource-juggler into fabien-feature/embeds-one
2014-08-20 14:28:45 -07:00
Raymond Feng
af329e3a66
Save the instance even the callback is not present
2014-08-20 14:22:47 -07:00
Fabien Franzen
20e5d3c01b
Validate embedded models by default
2014-08-20 08:58:08 -07:00
Fabien Franzen
1ec5357a6c
Implemented embedsOne
2014-08-20 08:58:08 -07:00
Fabien Franzen
faed0510c1
Coerce embedded model types
2014-08-20 08:58:07 -07:00
Fabien Franzen
3b81b928fb
Implement DAO unsetAttribute
2014-08-20 08:57:20 -07:00
Fabien Franzen
af99a8d344
Implemented belongsTo update/destroy on scope
2014-08-20 16:46:54 +02:00
Fabien Franzen
12ebaf77f2
Implemented hasOne destroy()
2014-08-20 15:58:45 +02:00
Fabien Franzen
123b2558a1
Implemented hasOne update()
2014-08-20 15:54:47 +02:00
Fabien Franzen
1d5079d811
Implement update() on embedsOne scope
2014-08-20 15:37:40 +02:00
Fabien Franzen
a446551a59
Fix relations for RDBMS connectors (mysql, postgresql)
...
- fix tests (explicit model/property definitions)
- fix include vs. RDBMS model strictness
2014-08-20 14:03:38 +02:00
Fabien Franzen
6f815526b0
Validate embedded models by default
2014-08-19 22:15:30 +02:00
Fabien Franzen
7c901af6d9
Implemented embedsOne
2014-08-19 22:10:35 +02:00
Fabien Franzen
2b262c04f6
Coerce embedded model types
2014-08-19 22:06:55 +02:00
Fabien Franzen
c19aca906d
Implement DAO unsetAttribute
2014-08-19 22:05:27 +02:00
Fabien Franzen
dad8266837
Prevent failure with null in List toObject
2014-08-18 07:28:33 +02:00
Raymond Feng
a6fe10e527
Merge pull request #226 from fabien/feature/multi-mixin
...
Add ability to apply a plugin multiple times from LDL
2014-08-17 22:18:05 -07:00
Fabien Franzen
291e7b2c74
Fix ModelDefinition toJSON bug
2014-08-17 18:01:52 +02:00
Fabien Franzen
39a728be84
Add ability to apply a plugin multiple times from LDL
2014-08-17 12:29:04 +02:00
Raymond Feng
c3c2907248
Merge pull request #224 from fabien/fix/ldl-polymorphic
...
Properly handle LDL for polymorphic relations
2014-08-16 08:15:09 -07:00
Fabien Franzen
b4b1c784dd
HasMany exists should use internal findById
...
This limits the scope correctly, taking polymorphics into account.
(the foreign key check is actually obsolete I think)
2014-08-16 13:04:13 +02:00
Fabien Franzen
315d5c15c6
Tiny fix: obsolete i8n require
2014-08-16 11:07:48 +02:00
Fabien Franzen
ad780604e1
Properly handle LDL for polymorphic relations
2014-08-16 11:03:16 +02:00
Raymond Feng
7f9108c6d2
Check null
...
See https://github.com/strongloop/loopback-datasource-juggler/issues/223
2014-08-15 23:30:23 -07:00
Fabien Franzen
3e300c1f35
Add strict flag to sortObjectsByIds
...
When true, any object not in the ids will be discarded and a subset
will be returned.
2014-08-15 19:47:12 +02:00
Fabien Franzen
9f1c5d9c37
Moved DataAccessObject.sortByIds to utils.js
2014-08-15 19:39:58 +02:00
Fabien Franzen
085bb94505
Allow partial list of ids for sortByIds
2014-08-15 19:39:58 +02:00
Raymond Feng
8743d75999
Merge pull request #222 from fabien/fix/relation-tests
...
Fixed duplicate code
2014-08-15 10:15:11 -07:00
Fabien Franzen
0e348b0333
Fixed duplicate code
2014-08-15 18:51:19 +02:00
Raymond Feng
03d94a86e5
Merge pull request #219 from fabien/fix/relation-tests
...
Fix BelongsTo.prototype.create + remaining issues with new relation types
2014-08-15 09:46:27 -07:00
Fabien Franzen
6b0bbed780
Merge branch 'fix/relation-tests' of https://github.com/fabien/loopback-datasource-juggler into fix/relation-tests
2014-08-15 18:43:20 +02:00
Fabien Franzen
96a276a12b
Refactor embedsMany - auto-save parent
...
With this change, saving an embedded model now correctly updates the
parent model.
Before, a separate `save()` call on the parent was required, contrary
to other relation types.
2014-08-15 18:40:33 +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
Fabien Franzen
8193f402bb
Refactor polymorphic relations, fix inverse #215
...
See #215 - when creating a related item through a the inverse of a
polymorphic HABTM relation,
the through-model was not created correctly. By refactoring the
specifics into the `polymorphic`
property of a RelationDefinition, it's now possible to handle this
correctly.
2014-08-15 18:35:31 +02:00
Fabien Franzen
78e2c9c9d4
Clarified tests, fixed BelongsTo.prototype.create
...
Added clarified test-case based on previous documentation example.
Fixed BelongsTo.prototype.create - although the foreignKey was set on
the model instance,
it was never actually persisted, unless you'd issue a separate call to
save the 'parent' model.
2014-08-15 18:35:31 +02:00
Raymond Feng
d7900a8a21
Merge pull request #211 from fabien/fix/relationTypes
...
Fix relationTypes
2014-08-15 09:29:22 -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
Raymond Feng
da4482d1cf
Merge pull request #213 from fabien/feature/scope-rel-methods
...
Implement scope.defineMethod/relation.defineMethod
2014-08-15 09:24:24 -07:00
Fabien Franzen
7cd880712b
Handle toObject in updateAttributes
...
Since one can call updateAttributes with any kind of properties (as
opposed to save, which uses toObject internally), any objects that
correspond to toObject should be handled as such. This is particularly
the case with List objects, as used by embedsMany.
2014-08-15 18:01:40 +02:00
Fabien Franzen
c2f9ee381c
Implement embedded.destroy() integration
2014-08-15 15:24:00 +02:00
Fabien Franzen
21801058c9
Refactor embedsMany - auto-save parent
...
With this change, saving an embedded model now correctly updates the
parent model.
Before, a separate `save()` call on the parent was required, contrary
to other relation types.
2014-08-15 15:12:02 +02:00
Fabien Franzen
c3c2c85ce4
Refactor polymorphic relations, fix inverse #215
...
See #215 - when creating a related item through a the inverse of a
polymorphic HABTM relation,
the through-model was not created correctly. By refactoring the
specifics into the `polymorphic`
property of a RelationDefinition, it's now possible to handle this
correctly.
2014-08-15 12:55:10 +02:00
Fabien Franzen
35850f6632
Clarified tests, fixed BelongsTo.prototype.create
...
Added clarified test-case based on previous documentation example.
Fixed BelongsTo.prototype.create - although the foreignKey was set on
the model instance,
it was never actually persisted, unless you'd issue a separate call to
save the 'parent' model.
2014-08-15 11:28:25 +02:00
Fabien Franzen
cd3ad32bb7
Fix formatting
2014-08-14 20:12:17 +02:00
Fabien Franzen
7d847f25dc
Fix scopeMethods closure issue
2014-08-14 20:12:17 +02:00
Fabien Franzen
a67759dcbf
Refactored embedsMany (relationName vs. propertyName)
2014-08-14 20:12:16 +02:00
Fabien Franzen
a243d05880
Enable DL definition of embedsMany + referencesMany
2014-08-14 20:12:16 +02:00
Fabien Franzen
807a6aaf3f
Refactor modelTo logic into lookupModelTo
2014-08-14 19:43:30 +02:00
Miroslav Bajtoš
12514b01d0
Merge pull request #210 from fabien/fix/embeds-many
...
Tiny fix: use setAttributes
2014-08-14 18:55:00 +02: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
Rand McKinney
4cb22793e2
Fix links to confluence docs
2014-08-11 11:42:21 -07:00
Fabien Franzen
93fab448bc
Tiny fix: use setAttributes
2014-08-11 13:03:51 +02:00
Raymond Feng
c53dc74d16
Fix a name conflict in scope metadata
2014-08-08 15:52:30 -07:00
Raymond Feng
caff62d8b3
Merge branch 'fabien-feature/plugins'
2014-08-08 09:29:17 -07:00
Raymond Feng
3d5ec63c99
Pass options into scope
2014-08-08 09:25:49 -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
Raymond Feng
f671c9c726
Clean up the mixin processing
2014-08-08 01:20:57 -07:00
Raymond Feng
55ff28206f
Merge branch 'feature/plugins' of github.com:fabien/loopback-datasource-juggler into fabien-feature/plugins
2014-08-07 22:51:25 -07:00
Laurent
71398518ff
Fix bug when using multiple include keys
2014-08-06 20:40:24 +02:00
Fabien Franzen
35776311fd
Unified plugins into mixins
...
Mixin types: module function, module object, LDL json object.
2014-08-06 13:26:47 +02:00
Fabien Franzen
455ee9ec63
Fix typo: loadPlugin(s)
2014-08-05 16:28:17 +02:00
Fabien Franzen
f1f692a8a5
Minor touch-ups
2014-08-05 16:26:34 +02:00
Fabien Franzen
1a4e8863ef
Basic plugin architecture
...
Similar to http://mongoosejs.com/docs/plugins.html
Next, loopback-boot should be updated to support loading plugins from
dirs.
2014-08-05 16:16:10 +02:00
Raymond Feng
d07b716ae8
Merge pull request #200 from strongloop/feature/emit-events-during-attach
...
Emit dataAccessConfigured events during attach
2014-08-04 15:27:11 -07:00
Fabien Franzen
93aea7eb66
Changed options.path to option.http.path
2014-08-04 19:45:47 +02:00
Fabien Franzen
81a822524d
Removed normalization (see strong-remoting)
2014-08-04 12:17:06 +02:00
Raymond Feng
b9d9ab0fb3
Emit dataAccessConfigured events during attach
...
See discussions at https://github.com/strongloop/loopback/issues/410
2014-08-01 08:22:33 -07:00
Fabien Franzen
ef65ffee48
Changed normalization api - enabled hasOne remoting
2014-08-01 11:24:41 +02:00
Fabien Franzen
71bf0f8240
Customize/Normalize class-level remoting http path
2014-08-01 09:38:25 +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
Jaka Hudoklin
d896a0982e
fix datasources to support new model parameters
...
Signed-off-by: Jaka Hudoklin <jakahudoklin@gmail.com>
2014-07-31 01:06:52 +02:00
Fabien Franzen
090c738bb5
Correctly handle remoting of scope methods
2014-07-30 17:30:21 +02:00
Fabien Franzen
af0ca5b108
Handle remoting of custom scope methods
2014-07-30 16:46:05 +02:00
Fabien Franzen
e38c92af87
ReferencesMany fixes after LB integration tests
2014-07-30 15:01:55 +02:00
Fabien Franzen
5cee6a4b79
Fixed embedsMany after LB integration
2014-07-30 13:22:20 +02:00
Raymond Feng
7a9b64f1bf
Fix the test failure for mongodb
2014-07-29 22:19:52 -07:00
Fabien Franzen
e888b8cff9
Allow custom scopeMethods option (obj/fn) for relation scopes
2014-07-29 22:59:44 +02:00