MCPcopy Create free account
hub / github.com/apache/pouchdb / bulkGet

Function bulkGet

lib/index.es.js:215–328  ·  view source on GitHub ↗
(db, opts, callback)

Source from the content-addressed store, hash-verified

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