UNPKG

node-rigorous

Version:
45 lines (31 loc) 1.43 kB
const mongoose = require('mongoose'); const RigorousError = require('../../../facades/RigorousError'); const errorsMessages = require('../../../etc/errorsMessages'); const patch = require('./patch'); const helper_format_checker = require('../../../helpers/format_checker'); /** * params.virtualReturnedFields = [{ path: 'owner', select: { xx: 1, yy: 1 } }] */ module.exports = async (modelName, query, params) => { try { if (helper_format_checker.isNil(params)) { throw new RigorousError(errorsMessages.OperationError.ParametersMissing); } if (helper_format_checker.isNil(params.selectAttributesReturned) && helper_format_checker.isObjectEmpty(params.selectAttributesReturned)) { throw new RigorousError(errorsMessages.OperationError); } const { selectAttributesReturned } = params; const { virtualReturnedFields } = params; const op = mongoose.model(modelName) .findOne(query) .select(selectAttributesReturned); if (virtualReturnedFields) { virtualReturnedFields.forEach((virtualFieldReturned) => { op.populate(virtualFieldReturned); }); } const resultOne = await op.exec(); const resultJson = patch.leanWithId(resultOne); return resultJson; } catch (errGlobal) { throw new RigorousError(errorsMessages.OperationError, errGlobal); } };