mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
Eliminate _fetch on handles returned from cursor.observe()
This was originally introduced withf1b77fec96, but it looks like all of our tests now pass. (Maybe eliminating `rewind` inb5a0613f85made 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:
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user