'use strict'; const Aspect = require('./operation').Aspect; const defineAspects = require('./operation').defineAspects; const OperationBase = require('./operation').OperationBase; const nextObject = require('./common_functions').nextObject; class NextOperation extends OperationBase { constructor(cursor) { super(); this.cursor = cursor; } execute(callback) { const cursor = this.cursor; // Return the currentDoc if someone called hasNext first if (cursor.s.currentDoc) { const doc = cursor.s.currentDoc; cursor.s.currentDoc = null; return callback(null, doc); } // Return the next object nextObject(cursor, callback); } } defineAspects(NextOperation, Aspect.SKIP_SESSION); module.exports = NextOperation;