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);
|
var handle = cursor.observeChanges(changeObserver.applyChange);
|
||||||
suppressed = false;
|
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;
|
return handle;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ ObserveSequence = {
|
|||||||
// more up-to-date information (specifically, the state of the observe
|
// more up-to-date information (specifically, the state of the observe
|
||||||
// before it was stopped, which may be older than the DB).
|
// before it was stopped, which may be older than the DB).
|
||||||
if (activeObserveHandle) {
|
if (activeObserveHandle) {
|
||||||
lastSeqArray = _.map(activeObserveHandle._fetch(), function (doc) {
|
lastSeqArray = _.map(lastSeq.fetch(), function (doc) {
|
||||||
return {_id: doc._id, item: doc};
|
return {_id: doc._id, item: doc};
|
||||||
});
|
});
|
||||||
activeObserveHandle.stop();
|
activeObserveHandle.stop();
|
||||||
|
|||||||
Reference in New Issue
Block a user