next.js
772 Bytes
'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;