HTMLify
insert_many.js
Views: 6 | Author: cody
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 'use strict'; const OperationBase = require('./operation').OperationBase; const BulkWriteOperation = require('./bulk_write'); const MongoError = require('../core').MongoError; const prepareDocs = require('./common_functions').prepareDocs; class InsertManyOperation extends OperationBase { constructor(collection, docs, options) { super(options); this.collection = collection; this.docs = docs; } execute(callback) { const coll = this.collection; let docs = this.docs; const options = this.options; if (!Array.isArray(docs)) { return callback( MongoError.create({ message: 'docs parameter must be an array of documents', driver: true }) ); } // If keep going set unordered options['serializeFunctions'] = options['serializeFunctions'] || coll.s.serializeFunctions; docs = prepareDocs(coll, docs, options); // Generate the bulk write operations const operations = [ { insertMany: docs } ]; const bulkWriteOperation = new BulkWriteOperation(coll, operations, options); bulkWriteOperation.execute((err, result) => { if (err) return callback(err, null); callback(null, mapInsertManyResults(docs, result)); }); } } function mapInsertManyResults(docs, r) { const finalResult = { result: { ok: 1, n: r.insertedCount }, ops: docs, insertedCount: r.insertedCount, insertedIds: r.insertedIds }; if (r.getLastOp()) { finalResult.result.opTime = r.getLastOp(); } return finalResult; } module.exports = InsertManyOperation; |