1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 'use strict';
- const MongoError = require('../error').MongoError;
- const collectionNamespace = require('./shared').collectionNamespace;
- const command = require('./command');
- function writeCommand(server, type, opsField, ns, ops, options, callback) {
- if (ops.length === 0) throw new MongoError(`${type} must contain at least one document`);
- if (typeof options === 'function') {
- callback = options;
- options = {};
- }
- options = options || {};
- const ordered = typeof options.ordered === 'boolean' ? options.ordered : true;
- const writeConcern = options.writeConcern;
- const writeCommand = {};
- writeCommand[type] = collectionNamespace(ns);
- writeCommand[opsField] = ops;
- writeCommand.ordered = ordered;
- if (writeConcern && Object.keys(writeConcern).length > 0) {
- writeCommand.writeConcern = writeConcern;
- }
- if (options.collation) {
- for (let i = 0; i < writeCommand[opsField].length; i++) {
- if (!writeCommand[opsField][i].collation) {
- writeCommand[opsField][i].collation = options.collation;
- }
- }
- }
- if (options.bypassDocumentValidation === true) {
- writeCommand.bypassDocumentValidation = options.bypassDocumentValidation;
- }
- const commandOptions = Object.assign(
- {
- checkKeys: type === 'insert',
- numberToReturn: 1
- },
- options
- );
- command(server, ns, writeCommand, commandOptions, callback);
- }
- module.exports = writeCommand;
|