mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
Backport observeHandle._fetch from shark
This commit is contained in:
@@ -175,5 +175,33 @@ LocalCollection._observeFromObserveChanges = function (cursor, observeCallbacks)
|
||||
{callbacks: observeChangesCallbacks});
|
||||
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(doc));
|
||||
});
|
||||
return docsArray;
|
||||
};
|
||||
}
|
||||
|
||||
return handle;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user