diff --git a/lib/datasource.js b/lib/datasource.js index 36be539d..ffd2608c 100644 --- a/lib/datasource.js +++ b/lib/datasource.js @@ -1884,6 +1884,24 @@ DataSource.prototype.ready = function (obj, args) { return true; }; +/** + * Ping the underlying connector to test the connections + * @param {Function} [cb] Callback function + */ +DataSource.prototype.ping = function (cb) { + var self = this; + if (self.connector.ping) { + this.connector.ping(cb); + } else if (self.connector.discoverModelProperties) { + self.discoverModelProperties('dummy', {}, cb); + } else { + process.nextTick(function () { + var err = self.connected ? null : 'Not connected'; + cb(err); + }); + } +}; + /** * Define a hidden property * @param {Object} obj The property owner diff --git a/lib/relation-definition.js b/lib/relation-definition.js index b224faad..fe7f1d81 100644 --- a/lib/relation-definition.js +++ b/lib/relation-definition.js @@ -2107,6 +2107,7 @@ EmbedsMany.prototype.destroyById = function (fkId, cb) { modelInstance.updateAttribute(propertyName, embeddedList, function(err) { cb(err); + modelTo.emit('deleted', inst.id, inst.toJSON()); }); } } else if (typeof cb === 'function') { diff --git a/package.json b/package.json index d592861c..2d24d449 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "loopback-datasource-juggler", - "version": "2.5.2", + "version": "2.6.0", "description": "LoopBack DataSoure Juggler", "keywords": [ "StrongLoop", diff --git a/test/basic-querying.test.js b/test/basic-querying.test.js index dd26928a..4fc8feb9 100644 --- a/test/basic-querying.test.js +++ b/test/basic-querying.test.js @@ -7,7 +7,6 @@ describe('basic-querying', function () { before(function (done) { db = getSchema(); - User = db.define('User', { seq: {type: Number, index: true}, name: {type: String, index: true, sort: true}, @@ -22,6 +21,15 @@ describe('basic-querying', function () { }); + describe('ping', function () { + it('should be able to test connections', function (done) { + db.ping(function (err) { + should.not.exist(err); + done(); + }); + }); + }); + describe('findById', function () { before(function (done) {