diff --git a/lib/remote-connector.js b/lib/remote-connector.js index 848c9d5..39f8514 100644 --- a/lib/remote-connector.js +++ b/lib/remote-connector.js @@ -4,6 +4,7 @@ var assert = require('assert'); var remoting = require('strong-remoting'); +var utils = require('loopback-datasource-juggler/lib/utils'); var jutil = require('loopback-datasource-juggler/lib/jutil'); var RelationMixin = require('./relations'); var InclusionMixin = require('loopback-datasource-juggler/lib/include'); @@ -94,14 +95,18 @@ function createProxyMethod(Model, remotes, remoteMethod) { var callback; if (lastArgIsFunc) { callback = args.pop(); + } else { + callback = utils.createPromiseCallback(); } if (remoteMethod.isStatic) { - return remotes.invoke(remoteMethod.stringName, args, callback); + remotes.invoke(remoteMethod.stringName, args, callback); + return callback.promise; } 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; diff --git a/test/models.test.js b/test/models.test.js index 879b516..9d6b659 100644 --- a/test/models.test.js +++ b/test/models.test.js @@ -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() { it('should create an instance and save to the attached data source', function(done) {