UNPKG

nodejs-rigorous

Version:
50 lines (40 loc) 1.69 kB
"use strict"; var _require = require('../../../factory/RigorousError/index'), RigorousError = _require.RigorousError, errorTypes = _require.errorTypes; var callbackResult = require('./callback_result'); var patch = require('./patch'); var helper_format_checker = require('../../../helpers/h_format_checker'); /** * params.virtualReturnedFields = [{ path: 'owner', select: { xx: 1, yy: 1 } }] */ module.exports = function (mongoose, collectionName, query, params) { return new Promise(function (resolve, reject) { try { if (helper_format_checker.isNil(params)) { throw new RigorousError(errorTypes.RESPONSE_ERROR_OPERATION_OP_PARAMS_MISSING); } if (helper_format_checker.isNil(params.selectAttributesReturned) && helper_format_checker.isObjectEmpty(params.selectAttributesReturned)) { throw new RigorousError(errorTypes.RESPONSE_ERROR_OPERATION); } var selectAttributesReturned = params.selectAttributesReturned; var virtualReturnedFields = params.virtualReturnedFields; var op = mongoose.model(collectionName).findOne(query).select(selectAttributesReturned); if (virtualReturnedFields) { virtualReturnedFields.forEach(function (virtualFieldReturned) { op.populate(virtualFieldReturned); }); } op.exec(function (err, resultUnfiltered) { callbackResult.exec(err, resultUnfiltered).then(function (resultOne) { var resultJson = patch.leanWithId(resultOne); return resolve(resultJson); })["catch"](function (err2) { return reject(err2); }); }); } catch (errGlobal) { reject(errGlobal); } }); };