nodejs-rigorous
Version:
Rigorous Framework
50 lines (40 loc) • 1.69 kB
JavaScript
;
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);
}
});
};