From 7cff1fa500b638b9e1c3b9292e2dceddaf6a5043 Mon Sep 17 00:00:00 2001 From: Mitar Date: Sun, 9 Jul 2017 11:24:12 -0700 Subject: [PATCH] Make Minimongo cursor iterable. --- packages/minimongo/minimongo.js | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/packages/minimongo/minimongo.js b/packages/minimongo/minimongo.js index b97663a8a7..d68038f521 100644 --- a/packages/minimongo/minimongo.js +++ b/packages/minimongo/minimongo.js @@ -180,6 +180,42 @@ LocalCollection.Cursor.prototype.forEach = function (callback, thisArg) { }); }; +LocalCollection.Cursor.prototype[Symbol.iterator] = function () { + var self = this; + + var i = 0; + var objects = self._getRawObjects({ordered: true}); + + if (self.reactive) { + self._depend({ + addedBefore: true, + removed: true, + changed: true, + movedBefore: true}); + } + + return { + next: function () { + if (i < objects.length) { + // This doubles as a clone operation. + var elt = self._projectionFn(objects[i++]); + + if (self._transform) + elt = self._transform(elt); + + return { + value: elt + }; + } + else { + return { + done: true + }; + } + } + }; +}; + LocalCollection.Cursor.prototype.getTransform = function () { return this._transform; };