UNPKG

offshore

Version:
49 lines (35 loc) 1.29 kB
/** * Streaming Queries */ var usageError = require('../utils/usageError'); var utils = require('../utils/helpers'); var normalize = require('../utils/normalize'); var ModelStream = require('../utils/stream'); module.exports = { /** * Stream a Result Set * * @param {Object} criteria * @param {Object} transformation, defaults to JSON */ stream: function(criteria, transformation, metaContainer) { var self = this; var usage = utils.capitalize(this.identity) + '.stream([criteria],[options])'; // Normalize criteria and fold in options criteria = normalize.criteria(criteria); // Transform Search Criteria criteria = self._transformer.serialize(criteria); // Configure stream to adapter, kick off fetch, and return stream object // so that user code can use it as it fires data events var stream = new ModelStream(transformation); // very important to wait until next tick before triggering adapter // otherwise write() and end() won't fire properly process.nextTick(function() { // Write once immediately to force prefix in case no models are returned stream.write(); // Trigger Adapter Method self.adapter.stream(criteria, stream, metaContainer); }); return stream; } };