MCPcopy
hub / github.com/apache/pouchdb / bulkGet

Function bulkGet

lib/index.js:220–333  ·  view source on GitHub ↗
(db, opts, callback)

Source from the content-addressed store, hash-verified

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