From e8a6f670048f22aae29c5ad63d0e325440d577ca Mon Sep 17 00:00:00 2001 From: Wouter Hager Date: Thu, 6 Mar 2014 19:16:03 +0100 Subject: [PATCH 1/2] Update path.js check for LazyArray in model.query --- path.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/path.js b/path.js index 65591b7..fd78785 100644 --- a/path.js +++ b/path.js @@ -158,7 +158,8 @@ exports.LinkResolving = function(model, getDataModel){ var rawResult = originalQuery.call(this, query, metadata); if(model.links.some(function(link){ return link.resolution!==undefined; })){ return when(rawResult, function(rawResult){ - var promises = rawResult.map(function(obj){ + // check for LazyArray + var promises = rawResult[rawResult instanceof LazyArray ? "some" : "map"](function(obj){ return resolve.call(self, obj, metadata); }); return when(all(promises), function(){ return rawResult; }); From 7a3a30871c4885eefc4e4c078c31e1341ed91487 Mon Sep 17 00:00:00 2001 From: Wouter Hager Date: Sat, 15 Mar 2014 16:02:20 +0100 Subject: [PATCH 2/2] convert LazyArray to real array ...before resolving links --- path.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/path.js b/path.js index fd78785..744fe81 100644 --- a/path.js +++ b/path.js @@ -159,9 +159,18 @@ exports.LinkResolving = function(model, getDataModel){ if(model.links.some(function(link){ return link.resolution!==undefined; })){ return when(rawResult, function(rawResult){ // check for LazyArray - var promises = rawResult[rawResult instanceof LazyArray ? "some" : "map"](function(obj){ - return resolve.call(self, obj, metadata); - }); + var promises; + if(rawResult instanceof LazyArray) { + promises = when(rawResult.toRealArray(), function(arr){ + return arr.map(function(obj){ + return resolve.call(self, obj, metadata); + }); + }); + } else { + promises = rawResult.map(function(obj){ + return resolve.call(self, obj, metadata); + }); + } return when(all(promises), function(){ return rawResult; }); }); }