12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.EvalOperation = void 0;
- const bson_1 = require("../bson");
- const error_1 = require("../error");
- const read_preference_1 = require("../read_preference");
- const command_1 = require("./command");
- /** @internal */
- class EvalOperation extends command_1.CommandOperation {
- constructor(db, code, parameters, options) {
- super(db, options);
- this.options = options !== null && options !== void 0 ? options : {};
- this.code = code;
- this.parameters = parameters;
- // force primary read preference
- Object.defineProperty(this, 'readPreference', {
- value: read_preference_1.ReadPreference.primary,
- configurable: false,
- writable: false
- });
- }
- execute(server, session, callback) {
- let finalCode = this.code;
- let finalParameters = [];
- // If not a code object translate to one
- if (!(finalCode && finalCode._bsontype === 'Code')) {
- finalCode = new bson_1.Code(finalCode);
- }
- // Ensure the parameters are correct
- if (this.parameters != null && typeof this.parameters !== 'function') {
- finalParameters = Array.isArray(this.parameters) ? this.parameters : [this.parameters];
- }
- // Create execution selector
- const cmd = { $eval: finalCode, args: finalParameters };
- // Check if the nolock parameter is passed in
- if (this.options.nolock) {
- cmd.nolock = this.options.nolock;
- }
- // Execute the command
- super.executeCommand(server, session, cmd, (err, result) => {
- if (err)
- return callback(err);
- if (result && result.ok === 1) {
- return callback(undefined, result.retval);
- }
- if (result) {
- callback(new error_1.MongoServerError({ message: `eval failed: ${result.errmsg}` }));
- return;
- }
- callback(err, result);
- });
- }
- }
- exports.EvalOperation = EvalOperation;
- //# sourceMappingURL=eval.js.map
|