MCPcopy Index your code
hub / github.com/apache/pouchdb / bulkGet

Function bulkGet

lib/index-browser.js:216–329  ·  view source on GitHub ↗
(db, opts, callback)

Source from the content-addressed store, hash-verified

214
215// shim for P/CouchDB adapters that don't directly implement _bulk_get
216function bulkGet(db, opts, callback) {
217 var requests = opts.docs;
218
219 // consolidate into one request per doc if possible
220 var requestsById = new Map();
221 requests.forEach(function (request) {
222 if (requestsById.has(request.id)) {
223 requestsById.get(request.id).push(request);
224 } else {
225 requestsById.set(request.id, [request]);
226 }
227 });
228
229 var numDocs = requestsById.size;
230 var numDone = 0;
231 var perDocResults = new Array(numDocs);
232
233 function collapseResultsAndFinish() {
234 var results = [];
235 perDocResults.forEach(function (res) {
236 res.docs.forEach(function (info) {
237 results.push({
238 id: res.id,
239 docs: [info]
240 });
241 });
242 });
243 callback(null, {results});
244 }
245
246 function checkDone() {
247 if (++numDone === numDocs) {
248 collapseResultsAndFinish();
249 }
250 }
251
252 function gotResult(docIndex, id, docs) {
253 perDocResults[docIndex] = {id, docs};
254 checkDone();
255 }
256
257 var allRequests = [];
258 requestsById.forEach(function (value, key) {
259 allRequests.push(key);
260 });
261
262 var i = 0;
263
264 function nextBatch() {
265
266 if (i >= allRequests.length) {
267 return;
268 }
269
270 var upTo = Math.min(i + MAX_NUM_CONCURRENT_REQUESTS, allRequests.length);
271 var batch = allRequests.slice(i, upTo);
272 processBatch(batch, i);
273 i += batch.length;

Callers 2

_setupMethod · 0.70
doBulkGetShimFunction · 0.70

Calls 2

nextBatchFunction · 0.70
getMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…