diff --git a/lib/dao.js b/lib/dao.js index b1fab616..3352579a 100644 --- a/lib/dao.js +++ b/lib/dao.js @@ -543,21 +543,27 @@ DataAccessObject.find = function find(params, cb) { obj._initProperties(d, false, params.fields); if (params && params.include) { - // Try to normalize the include - var includes = params.include; - if(typeof includes === 'string') { - includes = [includes]; - } else if(typeof includes === 'object') { - includes = Object.keys(includes); + if (params.collect) { + // Return the collected item for through models + obj = obj.__cachedRelations[params.collect]; + } else { + // Try to normalize the include + var includes = params.include || []; + if (typeof includes === 'string') { + includes = [includes]; + } else if (typeof includes === 'object') { + includes = Object.keys(includes); + } + includes.forEach(function (inc) { + // Promote the included model as a direct property + obj.__data[inc] = obj.__cachedRelations[inc]; + }); + delete obj.__data.__cachedRelations; } - includes.forEach(function (inc) { - // Promote the included model as a direct property - obj.__data[inc] = obj.__cachedRelations[inc]; - }); - delete obj.__data.__cachedRelations; } data[i] = obj; }); + if (data && data.countBeforeLimit) { data.countBeforeLimit = data.countBeforeLimit; }