1234567891011121314151617181920212223242526272829 |
- 'use strict';
- const MongooseError = require('../../error/mongooseError');
- /*!
- * A query thunk is the function responsible for sending the query to MongoDB,
- * like `Query#_findOne()` or `Query#_execUpdate()`. The `Query#exec()` function
- * calls a thunk. The term "thunk" here is the traditional Node.js definition:
- * a function that takes exactly 1 parameter, a callback.
- *
- * This function defines common behavior for all query thunks.
- */
- module.exports = function wrapThunk(fn) {
- return function _wrappedThunk(cb) {
- if (this._executionStack != null) {
- let str = this.toString();
- if (str.length > 60) {
- str = str.slice(0, 60) + '...';
- }
- const err = new MongooseError('Query was already executed: ' + str);
- err.originalStack = this._executionStack.stack;
- return cb(err);
- }
- this._executionStack = new Error();
- fn.call(this, cb);
- };
- };
|