Eliminate _fetch on handles returned from cursor.observe()

This was originally introduced with
f1b77fec96, but it looks
like all of our tests now pass. (Maybe eliminating `rewind` in
b5a0613f85 made this no
longer necessary?)

If we find that this commit did break something, let's make sure to
add a failing test before reverting.
This commit is contained in:
Avital Oliver
2014-08-01 15:01:26 -07:00
parent 6166abde14
commit e7250a045f
2 changed files with 1 additions and 28 deletions

View File

@@ -177,32 +177,5 @@ LocalCollection._observeFromObserveChanges = function (cursor, observeCallbacks)
var handle = cursor.observeChanges(changeObserver.applyChange);
suppressed = false;
if (changeObserver.ordered) {
// Fetches the current list of documents, in order, as an array. Can be
// called at any time. Internal API assumed by the `observe-sequence`
// package (used by Meteor UI for `#each` blocks). Only defined on ordered
// observes (those that listen on `addedAt` or similar). Continues to work
// after `stop()` is called on the handle.
//
// Because we already materialize the full OrderedDict of all documents, it
// seems nice to provide access to the view rather than making the data
// consumer reconstitute it. This gives the consumer a shot at doing
// something smart with the feed like proxying it, since firing callbacks
// like `changed` and `movedTo` basically requires omniscience (knowing old
// and new documents, old and new indices, and the correct value for
// `before`).
//
// NOTE: If called from an observe callback for a certain change, the result
// is *not* guaranteed to be a snapshot of the cursor up to that
// change. This is because the callbacks are invoked before updating docs.
handle._fetch = function () {
var docsArray = [];
changeObserver.docs.forEach(function (doc) {
docsArray.push(transform(EJSON.clone(doc)));
});
return docsArray;
};
}
return handle;
};

View File

@@ -86,7 +86,7 @@ ObserveSequence = {
// more up-to-date information (specifically, the state of the observe
// before it was stopped, which may be older than the DB).
if (activeObserveHandle) {
lastSeqArray = _.map(activeObserveHandle._fetch(), function (doc) {
lastSeqArray = _.map(lastSeq.fetch(), function (doc) {
return {_id: doc._id, item: doc};
});
activeObserveHandle.stop();