diff --git a/.gitignore b/.gitignore index 64a8281a..f3d45af1 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ doc coverage.html coverage v8.log +.idea** .DS_Store diff --git a/lib/abstract-class.js b/lib/abstract-class.js index 8167359c..05121b4f 100644 --- a/lib/abstract-class.js +++ b/lib/abstract-class.js @@ -841,6 +841,7 @@ AbstractClass.hasMany = function hasMany(anotherClass, params) { return {where: x}; }, { find: find, + all: all, destroy: destroy }); @@ -859,6 +860,23 @@ AbstractClass.hasMany = function hasMany(anotherClass, params) { }.bind(this)); } + function all(filter,cb) { + if (!filter) { + filter = {}; + } + if (!filter.where) { + filter.where = {}; + } + filter.where[fk] = this.id.toString(); + + anotherClass.all(filter,function(err,inst){ + if (err) return cb(err); + if (!inst) return cb(null,[]); + else return cb(null,inst); + + }.bind(this)); + } + function destroy(id, cb) { this.find(id, function (err, inst) { if (err) return cb(err); diff --git a/test/common_test.js b/test/common_test.js index 3caa8890..329a437e 100644 --- a/test/common_test.js +++ b/test/common_test.js @@ -542,6 +542,29 @@ function testOrm(schema) { it('hasMany should be cached', function (test) { //User.create(function (e, u) { // u.posts.create({}, function (e, p) { + // find all posts for a user. + /* User.all(function (err,users) { + for (var i=0;i