Commit Graph

2454 Commits

Author SHA1 Message Date
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š 0002aaedef 2.23.0
* Fix test for "after save" called on save/CREATE (Miroslav Bajtoš)

 * Code cleanup in lib/dao.js (Miroslav Bajtoš)

 * Save parent model of embedded relations (Fabien Franzen)

 * Pass options in operation hooks context. (Fabien Franzen)

 * check if id does not exist a bit more explicitly (Pulkit Singhal)

 * Fix persistUndefinedAsNull tests w/ SQL connectors (Miroslav Bajtoš)

 * Implement scope.updateAll (Fabien Franzen)

 * Fix the test cases so that they be run with the mssql connector (Raymond Feng)

 * Add model setting "persistUndefinedAsNull" (Miroslav Bajtoš)

 * Add abilities to remove and clear observers - Operation Hooks. (0angelic0)
2015-04-01 18:48:22 +02:00
Miroslav Bajtoš bc0f3b1d5c Merge pull request #554 from strongloop/fix/isNewInstance-tests
Fix isNewInstance tests + code cleanup
2015-04-01 18:44:45 +02:00
Miroslav Bajtoš a00b91db79 Fix test for "after save" called on save/CREATE
Fix the test to correctly trigger the code path where the connector
decides whether a new record is created or an existing one is updated.
2015-04-01 18:25:45 +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
Raymond Feng 1461400f72 Merge pull request #553 from fabien/fix/save-embed-model
Save parent model of embedded relations
2015-04-01 08:50:17 -07: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
Miroslav Bajtoš d18fa04ee9 Merge pull request #548 from strongloop/fix/persistUndefinedAsNull-tests-and-SQL
Fix persistUndefinedAsNull tests w/ SQL connectors
2015-03-30 19:28:40 +02:00
Fabien Franzen 1ab3d74ab5 Pass options in operation hooks context. 2015-03-30 18:03:42 +02:00
Raymond Feng 7c7f04955d Merge pull request #543 from strongloop/feature/fix-test-case
Fix the test cases so that they be run with the mssql connector
2015-03-30 08:25:10 -07:00
Raymond Feng 38114f5676 Merge pull request #550 from pulkitsinghal/master
check if id does not exist a bit more explicitly
2015-03-30 08:22:58 -07: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
Miroslav Bajtoš b66d9fbc54 Fix persistUndefinedAsNull tests w/ SQL connectors
Check whether the connector enables strict mode and don't assert on
dynamic properties in such case.
2015-03-30 10:45:55 +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
Raymond Feng d192b2ea05 Fix the test cases so that they be run with the mssql connector
For SQL server, if the PK is an identity, the id cannot be set for
insert.
2015-03-27 14:18:17 -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
Miroslav Bajtoš dac1899f59 2.22.0
* Code cleanup in updateAll/deleteAll (Miroslav Bajtoš)

 * Return scope object from DAO.scope (Fabien Franzen)

 * Remove all usages of lodash. (Miroslav Bajtoš)

 * Clean up delete and update tests (Simon Ho)

 * Clean up wording in update/delete tests (Simon Ho)

 * Fix wording in update test (Simon Ho)

 * Properly support embedsMany destroyAll (Fabien Franzen)

 * Clean up update/delete manipulation tests (Simon Ho)

 * test: fix test failure in MySQL connector (Miroslav Bajtoš)

 * Improve test failure messages (Miroslav Bajtoš)

 * Fix regression in prototype.save (Miroslav Bajtoš)

 * Enable more CRUD remoting methods for embedsOne (Fabien Franzen)

 * Implement scope.findOne (Fabien Franzen)

 * use findOrCreate for HasManyThrough#create (Clark Wang)

 * Enhance id comparision for updateAttributes (Raymond Feng)

 * Enable custom methods on singular relations (Fabien Franzen)

 * Implement scope.findById (Fabien Franzen)

 * Fix updateAll callback in "transient" connector (Miroslav Bajtoš)

 * Memory connector returns updated records count (Simon Ho)

 * Add ctx.isNewInstance for "save" hooks (Miroslav Bajtoš)

 * deleteAll returns number of deleted records (Miroslav Bajtoš)

 * Use the correct way to iterate over an array (Raymond Feng)

 * DAO: Fix updateOrCreate to set persisted:true (Miroslav Bajtoš)

 * Reject CREATE with a duplicate id (Miroslav Bajtoš)

 * add tests for between in memory connector (Daniel B. Vasquez)

 * enable between filter for memory db connector (Daniel B. Vasquez)

 * fix #429 Multiple Models can't mixin same class (Clark Wang)
2015-03-27 18:03:08 +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š 3ea2ac9f68 Merge pull request #538 from strongloop/fix/browser-bundle-size
Remove all usages of lodash
2015-03-26 19:20:41 +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
Simon Ho b5188a5af4 Merge pull request #537 from strongloop/cleanup/update-and-delete-tests
Clean up delete and update tests
2015-03-24 21:40:46 -07:00
Simon Ho 311ab293d2 Clean up delete and update tests 2015-03-24 21:30:40 -07:00
Simon Ho e13c0cdc12 Merge pull request #536 from strongloop/cleanup/manipulation-test-wording
Clean up wording in update/delete tests
2015-03-24 12:22:01 -07:00
Simon Ho f7540edf8a Clean up wording in update/delete tests 2015-03-24 12:15:35 -07:00
Simon Ho d64d35faf0 Merge pull request #535 from strongloop/cleanup/wording-in-update-test
Fix wording in update test
2015-03-24 11:49:00 -07:00
Simon Ho 8467243e63 Fix wording in update test 2015-03-24 11:47:13 -07: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
Simon Ho 77ff8541cc Merge pull request #530 from strongloop/fix/clean-up-delete-and-update-mainipulation-tests
Clean up update/delete manipulation tests
2015-03-23 14:54:53 -07:00
Simon Ho 3f97586455 Clean up update/delete manipulation tests 2015-03-23 14:41:38 -07:00
Miroslav Bajtoš 48509ef6a6 Merge pull request #528 from strongloop/fix/regression-in-prototype-save
Fix regression in DAO.prototype.save
2015-03-23 09:21:56 +01:00
Miroslav Bajtoš 35b549543d test: fix test failure in MySQL connector
Fix a test using a string Person.id value to use a numeric value
instead, in order to support connectors that use numeric ids by default.
2015-03-23 09:18:46 +01:00
Miroslav Bajtoš 1fbaf4e382 Improve test failure messages
Replace

    foo.count.should.equal(X)
    Uncaught TypeError: Cannot read property 'should' of undefined

with

    foo.should.have.property('count', X)`
    Uncaught AssertionError: expected 0 to have property count
2015-03-23 08:44:53 +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
Raymond Feng 268c04e14f Merge pull request #524 from fabien/feature/scope-findOne
Implement scope.findOne
2015-03-22 07:55:15 -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