Added promise support

This commit is contained in:
Heath Morrison 2016-04-25 01:07:15 +03:00
parent 2b38f3c381
commit a4e825191f
2 changed files with 16 additions and 2 deletions

View File

@ -4,6 +4,7 @@
var assert = require('assert'); var assert = require('assert');
var remoting = require('strong-remoting'); var remoting = require('strong-remoting');
var utils = require('loopback-datasource-juggler/lib/utils');
var jutil = require('loopback-datasource-juggler/lib/jutil'); var jutil = require('loopback-datasource-juggler/lib/jutil');
var RelationMixin = require('./relations'); var RelationMixin = require('./relations');
var InclusionMixin = require('loopback-datasource-juggler/lib/include'); var InclusionMixin = require('loopback-datasource-juggler/lib/include');
@ -94,14 +95,18 @@ function createProxyMethod(Model, remotes, remoteMethod) {
var callback; var callback;
if (lastArgIsFunc) { if (lastArgIsFunc) {
callback = args.pop(); callback = args.pop();
} else {
callback = utils.createPromiseCallback();
} }
if (remoteMethod.isStatic) { if (remoteMethod.isStatic) {
return remotes.invoke(remoteMethod.stringName, args, callback); remotes.invoke(remoteMethod.stringName, args, callback);
return callback.promise;
} }
var ctorArgs = [this.id]; var ctorArgs = [this.id];
return remotes.invoke(remoteMethod.stringName, ctorArgs, args, callback); remotes.invoke(remoteMethod.stringName, ctorArgs, args, callback);
return callback.promise;
} }
scope[remoteMethod.name] = remoteMethodProxy; scope[remoteMethod.name] = remoteMethodProxy;

View File

@ -94,6 +94,15 @@ describe('Model tests', function() {
}); });
}); });
describe('Model methods', function() {
it('should support promises', function(done) {
assert(User.create() instanceof Promise);
assert(User.find() instanceof Promise);
assert(User.findById(99) instanceof Promise);
done();
});
});
describe('Model.create([data], [callback])', function() { describe('Model.create([data], [callback])', function() {
it('should create an instance and save to the attached data source', it('should create an instance and save to the attached data source',
function(done) { function(done) {