From 344441d48d125766af5b8c0d0a6ef42a50d95324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Mon, 13 May 2019 09:13:33 +0200 Subject: [PATCH] Fix "loaded" hook for unoptimized "near" queries Before this change, two "loaded" events were emitted for every model instance found. This commit fixes the problem and restores the intended behavior. The bug was probably introduced by 5e0c73bec7. --- lib/dao.js | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/lib/dao.js b/lib/dao.js index d146586a..4c3598c9 100644 --- a/lib/dao.js +++ b/lib/dao.js @@ -1569,7 +1569,8 @@ DataAccessObject.find = function find(query, options, cb) { return cb.promise; } } - function geoCallbackWithoutNotify(err, data) { + + function geoCallback(err, data) { const memory = new Memory(); const modelName = self.modelName; @@ -1588,37 +1589,14 @@ DataAccessObject.find = function find(query, options, cb) { }); }); - // FIXME: apply "includes" and other transforms - see allCb below memory.all(modelName, geoQueryObject, options, allCb); } else { cb(null, []); } } - function geoCallbackWithNotify(err, data) { - if (err) return cb(err); - - async.map(data, function(item, next) { - const context = { - Model: self, - data: item, - isNewInstance: false, - hookState: hookState, - options: options, - }; - - self.notifyObserversOf('loaded', context, function(err) { - if (err) return next(err); - next(null, context.data); - }); - }, function(err, results) { - if (err) return cb(err); - geoCallbackWithoutNotify(null, results); - }); - } function queryGeo(query) { geoQueryObject = query; - const geoCallback = options.notify === false ? geoCallbackWithoutNotify : geoCallbackWithNotify; invokeConnectorMethod(connector, 'all', self, [{}], options, geoCallback); }