Miroslav Bajtoš
699e0587d1
Ensure stable order of items in DAO.find()
...
When post-processing result of find operation, use "async.map"
instead of "async.each + array.push" to ensure the order of items
is preserved.
2016-07-13 14:55:49 +02:00
Rand McKinney
45e14af4a9
Update validations.js
...
Fix API doc per https://github.com/strongloop/loopback/issues/2472
2016-06-29 16:13:44 -07:00
gunjpan
8076be2db1
Remove DataSource.registerType()
...
Result of compat flag cleanup.
- Current implementation has a wrapper
DataSource.registerType() for
ModelBuilder.registerType(). This removes
the wrapper to encourage use of original
method
2016-06-28 14:45:42 -04:00
RobinBiondi
fbe58f7cf8
give options to validators #984
2016-06-24 14:44:43 -07:00
Gunjan Pandya
e0a68289c5
Merge pull request #947 from strongloop/update-errormsg
...
[SEMVER-MAJOR] Throw Error for property names with dots
2016-06-24 16:50:00 -04:00
Amir-61
73bb418719
Merge pull request #960 from strongloop/fix/connection-err-msg
...
Update datasource.js
2016-06-17 11:29:26 -04:00
gunjpan
8117b0403f
Throw Error for property names with dots
...
Result of Compat Flags Clenup.
Throws an error for property names with dots, instead
of a deprecation warning.
2016-06-09 17:50:59 -04:00
Amir Jafarian
7a8803cb38
Give warning if PK is changed in hooks
...
* Give warning if PK is changed in `before save` and `loaded`
operation hooks for replaceById
2016-06-08 11:56:19 -04:00
Candy
3daca1e960
Remove model events
2016-06-08 10:27:05 -04:00
Dimitris Halatsis
ea2266e453
Persist changes on parent for embedsOne
...
Allow direct save of changes on embedded model to be persisted on
parent document.
Person.embedsOne(Address);
Person.findById(someId)
.then(function(p){
var address = p.addressItem();
address.street = 'new street'
// This will now persist changes on parent document
return address.save();
})
[forward-port of #949 ]
2016-06-07 17:24:59 +02:00
Amir Jafarian
8f2077e344
Fix
2016-06-03 18:00:21 -04:00
Ritchie Martori
293a22fd31
Update datasource.js
...
Return a real `Error` message for the default `ping()` method.
2016-06-02 14:02:06 -07:00
Amir Jafarian
cae44f0458
Fix error message
...
*Fix error message when PK is changed in `replaceById`
2016-06-01 16:16:35 -04:00
Amir-61
8f347fbacb
Merge pull request #954 from strongloop/callback_err_from_connector_UPSERT
...
Retun err for UPSERT if the connector returns err
2016-06-01 15:51:35 -04:00
Dimitris Halatsis
b7ba73f1b1
ModelBuilder: add new setting strictEmbeddedModels
...
The setting controls the strict mode used for embedded property types,
for example the type of "address" property in this model definition:
modelBuilder.define('TestEmbedded', {
name: 'string',
address: {
street: 'string',
},
});
2016-06-01 13:12:50 +02:00
Amir Jafarian
82546fdf47
Retun err for UPSERT if the connector returns err
2016-05-31 22:17:23 -04:00
Alex Pitigoi
423db34bf3
fix error handling when applying undefined mixins
2016-05-31 12:24:04 -04:00
Amir Jafarian
d9a3f6226a
Fix incompatibility between different connectors
...
* Fix incompatibility for replace methods between different connectors.
2016-05-27 13:45:24 -04:00
Sequoia McDowell
ae7a5df47b
Document promise support for DAO::find
...
It was previously completely undocumented. There are additional methods that add promises but I figure accurately documenting some is better than none. :)
2016-05-11 09:58:22 -04:00
Miroslav Bajtoš
8ad53a4c0e
DAO.create: don't return the instance
...
Simplify DataAccessObject.create() and stop returning the
instance/array of instances. Users should always use callback (or
returned promise) to get the instance(s) created.
2016-04-29 14:16:06 +02:00
Miroslav Bajtoš
9bde8f859b
Implement operation hooks for EmbedsMany methods
...
create() triggers
- before save
- after save
updateById() triggers
- before save
- after save
destroy() triggers
- before delete
- after delete
The implementation here is intentionally left with less features
than the regular DAO methods provide, the goal is to get a partial
(but still useful!) version released soon.
Limitations:
- `before save` & `after save` hooks don't provide `ctx.isNewInstance`
- async validations are not supported yet
- `persist` and `loaded` hooks are not triggered at all
- `before delete` hook does not provide `ctx.where` property and
it's not possible to change the outcome of `destroy()` using this
hook. Note that regular DAO does support this.
- updating embedded instances triggers update of the parent (owning)
model, which is correct and expected. However, the context provided
by `before save` and `after save` hooks on the parent model is sort of
arbitrary and may include wrong/extra data. The same probably applies
to the scenario when deleting embedded instances triggers update of
the parent model.
2016-04-27 11:04:15 +02:00
Miroslav Bajtoš
b86615e2b7
Implement operation hooks for EmbedsOne methods
...
create() triggers
- before save
- after save
udpate() triggers
- before save
- after save
destroy() triggers
- before delete
- after delete
The implementation here is intentionally left with less features
than the regular DAO methods provide, the goal is to get a partial
(but still useful!) version released soon.
2016-04-20 09:36:12 +02:00
Miroslav Bajtoš
c7f34c3452
eslint config 2.0 + remove extra empty lines
...
Upgrade eslint-config-loopback to ^2.0.0.
Remove extra empty lines to make `npm run lint` pass again.
2016-04-19 16:11:43 +02:00
Amir Jafarian
4e6351b856
Fix `forceId` check for `replaceById`
2016-04-14 15:05:56 -04:00
Amir Jafarian
e9afb46eda
Fix `notify` bugs for `find`
2016-04-13 13:34:51 -04:00
Amir Jafarian
4bb284bb60
Define `patch` aliases
...
*Define `patchOrCreate` as an alias for `updateOrCreate`
*Define `PatchAttributes` as an alias for `updateAttributes`
2016-04-12 13:40:01 -04:00
Simon Ho
85ed753609
Merge pull request #786 from strongloop/feature/fix-610
...
Partition by foreign key for pagination
2016-04-06 14:01:08 -07:00
Raymond Feng
84da11f98e
Partition by foreign key for pagination
...
See https://github.com/strongloop/loopback-datasource-juggler/issues/610
2016-04-05 17:21:48 -07:00
Raymond Feng
daaf5e381a
Merge branch 'discover-hang' of https://github.com/TorchlightSoftware/loopback-datasource-juggler into TorchlightSoftware-discover-hang
...
# Conflicts:
# lib/datasource.js
# test/discovery.test.js
2016-04-05 16:18:25 -07:00
Raymond Feng
e321bafdf9
Fix style errors
2016-04-05 16:11:25 -07:00
Raymond Feng
b7543e9402
Merge pull request #860 from horiaradu/master
...
fix nin support for in memory datasource
2016-04-05 15:42:07 -07:00
Miroslav Bajtoš
27c6279d6c
fix remaining eslint issues
2016-04-05 15:25:34 +02:00
Miroslav Bajtoš
39e04a1756
eslint --fix
2016-04-05 15:25:34 +02:00
Ryan Graham
c467b43c38
Insert copyright headers
2016-04-04 18:14:03 -07:00
bitmage
57afba8c51
support custom field settings under the connector's namespace
2016-03-16 09:17:55 -07:00
gunjpan
6db59cba6f
Update error message for missing connector
2016-03-15 17:01:37 -04:00
Horia Radu
a3ae44aca0
fix nin support for in memory datasource
2016-02-27 10:27:09 +02:00
Miroslav Bajtoš
9dcf30efe9
Improve error message on connector init error
2016-02-26 14:00:24 +01:00
Candy
686ce5bae3
Fix missing connector error msg for db2, cloudant
2016-02-09 16:19:57 -05:00
Amir Jafarian
2281e95940
Implementtaion of replace
...
This includes:
*implementation of replaceAttributes
*implementtaion of replaceOrCreate
2016-02-03 16:06:35 -05:00
Amir Jafarian
ef232eae0a
Fix conversion for `updateAttributes`
2016-02-03 12:04:51 -05:00
Jue Hou
0d9eebe3bb
Prevent constructor to be property name
2016-02-02 11:51:05 -05:00
Amir Jafarian
550cfa2a86
Refactor `updateAttributes`
2016-01-25 10:56:27 +01:00
bitmage
b556d96148
discoverSchemas returns an error when modelName is not found,
...
discoverSchema forwards that error and does not hang when no columns,
no errors are returned
2016-01-22 10:41:06 -07:00
Amir Jafarian
ba7161b39e
Implement `findOrCreate` for memory connector
2016-01-16 18:46:53 -05:00
Amir Jafarian
a5150265ec
Fix a bug when validation is off for findOrCreate
2016-01-08 16:47:38 -05:00
Jue Hou
853ca03491
Use bluebird in utils.js
...
Replace `global.Promise` with `bluebird`
2016-01-07 15:27:33 -05:00
Miroslav Bajtoš
b509c759c4
Merge pull request #796 from strongloop/fix/various
...
Various fixes in operation hooks
2016-01-05 11:08:35 +01:00
Farid Nouri Neshat
93c9f63b0d
Fix broken code fencings in the docs
2015-12-28 23:03:37 +08:00
Miroslav Bajtoš
e9899a93cf
Enhance "persist" hook in DAO.updateOrCreate
...
Report `ctx.isNewInstance` when the connector provides this info.
2015-12-18 16:08:38 +01:00
Miroslav Bajtoš
fd9bef4aa7
Enhance "persisted" hook in DAO.updateAttributes
...
Add `isNewInstance:false` to the context reported by
DAO.updateAttributes()
2015-12-18 16:08:01 +01:00
Miroslav Bajtoš
3028329126
"loaded" hook in DAO.find: ctx.data, not instance
...
Fix the implementation od DAO.find to provide "ctx.data" to the
"loaded" hook.
2015-12-18 15:54:35 +01:00
Miroslav Bajtoš
80c3bd9d41
Merge pull request #752 from ernie58/optionalValidation
...
make automatic validation optional
2015-12-04 17:03:28 +01:00
Bert Casier
0f3f27af51
Make automatic validation optional
...
Make automatic validation optional on all CRUD methods in a loopback
model. This can be done in 2 ways
- set `automaticValidation` in the model settings
- set `validate` on the options passed when calling the crud methods
The options take precedence on the model setting.
By default the automatic validation remains true to be backwards
compatible
2015-12-03 16:34:25 +01:00
Raymond Feng
bc825fafc4
Merge pull request #755 from zmijevik/zmijevik-feature/include-if-contains-results
...
fixes #753
2015-11-26 09:33:47 -08:00
Raymond Feng
3a3cb5b7cb
Merge pull request #764 from eugene-frb/master
...
Capture includeHasMany() as a find()'s caller by findCaller option
2015-11-26 09:29:14 -08:00
Raymond Feng
e1f20ee3ea
Merge pull request #772 from Abebw/master
...
Ignored Error
2015-11-26 09:28:50 -08:00
Raymond Feng
486c1de1ba
Merge pull request #715 from nennad/master
...
foreignKey dataLength fix
2015-11-26 09:28:08 -08:00
eugene-frb
ba4600e564
Explicitly initialize column of partition by clause and pass it in find()'s options argument
2015-11-25 13:56:59 -08:00
Clark Wang
0ac70766eb
silence a warning that introduced in bluebird 3.0
...
see http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-created-in-a-handler-but-none-were-returned-from-it
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-11-24 17:15:53 +08:00
Raymond Feng
bd314e6a87
Merge branch 'with-simpe-and-fast-hasmany' of https://github.com/wertlex/loopback-datasource-juggler into wertlex-with-simpe-and-fast-hasmany
2015-11-23 15:21:18 -08:00
Abe BW
0334766490
fixed a bug where an error was sent to the updateAttributesCallback and then ignored
2015-11-23 14:07:35 -05:00
Michael Diguet
d8678a1f03
Correction of a regression introduced by commit 632898b: when querying an empty array ([]) with a 'neq' filter, there were no matching.
2015-11-23 17:09:24 +01:00
eugene-frb
96020c7e7e
Capture includeHasMany() as a find()'s caller by findCaller option
...
To replace incorrect location of capturing this condition in find() in
loopback-connector/lib/sql.js proposed earlier in
https://github.com/strongloop/loopback-connector/pull/34 .
Being set to 'includeHasMany', findCaller option triggers injection of
PARTITION BY clause in buildColumnNames() in
loopback-connector-mssql/lib/mssql.js only when find() function is
called to process include filter with 'has many' relation.
2015-11-19 11:10:52 -08:00
Joseph M. Persie
5ddb50aca4
fixes #753
2015-11-04 20:13:12 -05:00
Clark Wang
b1b36ed44e
fix typo
2015-11-04 14:58:28 +08:00
Clark Wang
b993fb9466
fix global leak that mocha complains
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-11-04 14:19:47 +08:00
Wert_Lex
d9918d526a
dropped unused functions and tests fixed
2015-10-30 21:36:50 +06:00
Wert_Lex
2f31701655
One more comment
2015-10-30 21:19:37 +06:00
Wert_Lex
638002bc59
Looks better now
2015-10-30 21:15:48 +06:00
Raymond Feng
d0072b68a1
Merge pull request #739 from mdartic/master
...
Fix filtering relations of a model with an order specified
2015-10-28 08:38:03 -07:00
Federico Rampazzo
2de499ccb0
Added missing callback when a model is not found
2015-10-28 09:15:32 +00:00
mdartic
7c22db6ea7
Filtering relations of a model with an order specified
2015-10-16 18:21:04 +02:00
Wert_Lex
1cab0164c2
home-written map extended with proper .set() method
2015-10-10 21:00:00 +05:00
Wert_Lex
a5dd9c181a
on the halfway to keeping original keys
2015-10-10 19:37:39 +05:00
Wert_Lex
0864bf7154
with updated map which stores original key and tests for them
2015-10-10 19:21:06 +05:00
Ryan Schumacher
94c3f9a432
Ability to define normalization of undefined query
...
Add datasource and model setting `normalizeUndefinedInQuery`
to determine how it will handle undefined values. Options:
- nullify : converts undefined to null
- throw : throw an error on undefined value
- ignore : strip the key where undefined value is found
The default operation is to strip the key.
2015-10-07 09:26:09 -07:00
James Cooke
6dac956cf8
findByIds would fail when an array of 0 length was passed as its first argument
2015-09-23 16:27:41 +01:00
Raymond Feng
207edd5eec
Merge pull request #687 from sklyukin/master
...
primaryKey to hasOne relation
2015-09-08 09:20:42 -07:00
Rand McKinney
0e2d2c162e
Update validations.js
...
Fix small mistake in doc comment.
2015-09-04 16:31:54 -07:00
nennad
e679deb376
typo fix
2015-09-03 17:02:21 +01:00
nennad
f3b0cb062e
Fix foreignKey length issue
...
If the PK has a definition like
```
"mysql": {
"dataType": "CHAR",
"dataLength":36,
"nullable":"N"
}
```
dataLength is ignored when the PK is used as a foreignKey in other models
2015-09-03 17:00:38 +01:00
Bram Borggreve
fb11c78be0
Add support for using UUID V4 as defaultFn
2015-09-02 16:39:00 +02:00
sklyukin
d0f9b760f5
primaryKey for hasMany and belongsTo relations
2015-09-01 19:03:02 +05:00
sklyukin
483cd873e7
primaryKey to hasOne relation
2015-09-01 01:31:28 +05:00
Raymond Feng
febfe2362a
Merge pull request #699 from satyadeepk/master
...
Fixed ReferencesMany .findById to check the given id in the modelInstance[fk]
2015-08-31 10:08:38 -07:00
Laurent Villeneuve
632898b022
Add support for matching array values à la mongo.
2015-08-27 23:32:53 -04:00
Simon Ho
57a9c40e16
Fix primary key checks
2015-08-27 13:59:43 -07:00
Wert_Lex
7b497eb58f
Moved inst initialization to place where it used
2015-08-25 15:46:50 +03:00
Wert_Lex
84dc39dfe2
All tests passed
2015-08-24 20:45:41 +03:00
Wert_Lex
fb56915371
Dirty merge. Tests are broken
2015-08-24 16:07:43 +03:00
Wert_Lex
e585021586
include utils add. Tests ported to should.js
2015-08-24 15:41:04 +03:00
Simon Ho
cd71a37bfa
Relax id requirement for basic query operations
2015-08-20 02:57:53 -07:00
Satyadeep
ad83c82ebc
Fixed ReferencesMany .findById to check the given id in the ids array of the model instance
2015-08-19 22:34:16 +05:30
Laurent Villeneuve
0381f6d7e7
Support embedded query in memory connector. Fix memory connector bug
...
Adds support for the ability to query embedsMany models from the parent.
Fix a memory connector bug that could occur when having an "or" or "and"
clause combined with another property. In that case, the and would revert
true for 'Paul McCartney'
```
{name:'John Lennon',and: [{role:'lead'}, {vip:true}]}}
```
2015-08-18 15:56:36 -04:00
Laurent Villeneuve
bdf703fb45
Use idEquals when comparing ids in relation definitions
2015-08-18 10:22:36 -04:00
Laurent Villeneuve
94ff275bbc
Handle possible undefined id
2015-08-18 09:40:52 -04:00
Laurent Villeneuve
9363354e0f
Fix id copmarison by using strings
2015-08-18 09:40:52 -04:00
Raymond Feng
f5270c39c5
Refactor idEquals to utils
2015-08-17 12:49:38 -07:00
Simon Ho
d14721656f
Merge pull request #691 from strongloop/do-not-coerce-regexp-to-string
...
Do not coerce RegExp objects to strings
2015-08-14 09:14:05 -07:00
Simon Ho
e7e074f97b
Do not coerce RegExp objects to strings
...
Queries like `{where: {name: /John.*/i}}` should work. Notice there is no
`regexp` operator (ie. `{where: {name: {regexp: /John.*/i}}}`).
2015-08-13 16:16:48 -07:00
Fabien Franzen
2120e53f7f
Indicate result of destroyById/protototype.destroy
...
Return `info.count` to the callback to indicate whether the model
instance was deleted or not. When Model's `settings.strictDelete`
is true, return 404 error when the model instance was not found.
2015-08-10 17:38:46 +02:00
Raymond Feng
62624203d1
Merge pull request #683 from thefinnomenon/master
...
Fixed typo & added the filter units
2015-08-06 08:50:21 -07:00
Chris Finn
42805fd326
Removed extra ")"
2015-08-05 15:39:33 -04:00
Raymond Feng
21c0067462
Report deferred exceptions via callback
2015-08-05 11:18:38 -07:00
Chris Finn
f35bd39e60
Fixed typo & added the filter units
...
Fixed typo in nearby sort function & added the ability to specify units when filtering for nearby points.
2015-08-05 14:18:28 -04:00
Kenta Fried
90ee9a1af3
fixes issue 673: Include hasMany of relation does not return empty array
2015-07-31 14:47:22 -07:00
Simon Ho
4cd428a726
Fix regexp error for the memory connector
...
- Check for undefined/null values when accessing `regexp` key
2015-07-30 08:46:50 -07:00
Raymond Feng
4d7bfc94cd
Fix error handling
2015-07-29 10:21:47 -07:00
Raymond Feng
c45bde7ccf
Merge pull request #647 from PradnyaBaviskar/issue-418-discover
...
Promisify all 'discover' methods
2015-07-29 07:43:39 -07:00
Raymond Feng
ce57234d5e
Merge branch 'issue656-findLoadedAsync' of https://github.com/PradnyaBaviskar/loopback-datasource-juggler into PradnyaBaviskar-issue656-findLoadedAsync
2015-07-29 07:33:21 -07:00
Simon Ho
68dc1d821f
Remove try/catch from find function
2015-07-28 17:40:14 -07:00
Simon Ho
b2b5a0d920
Merge pull request #665 from strongloop/add-regex-support
...
Add support for RegExp operator
2015-07-28 15:22:02 -07:00
Simon Ho
b8f1598723
Add support for regex operator
2015-07-27 15:11:53 -07:00
Pradnya Baviskar
de0ca3c61f
Async 'loaded' hook for find
2015-07-27 18:58:29 +05:30
Pradnya Baviskar
c63f3fb6cb
Promisify all 'discover' methods
2015-07-24 12:07:22 +05:30
Raymond Feng
b08b6dd954
Merge pull request #650 from PradnyaBaviskar/issue-649
...
Fix 'persist' hook for updateAttributes()
2015-07-23 08:27:07 -07:00
Pradnya Baviskar
8a20e07b3d
Fix 'persist' hook for updateAttributes()
2015-07-23 15:25:50 +05:30
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