UNPKG

nodejs-rigorous

Version:
59 lines (47 loc) 1.8 kB
"use strict"; var mongoose = require('mongoose'); var _require = require('../../../factory/RigorousError/index'), RigorousError = _require.RigorousError, errorTypes = _require.errorTypes; var mongoRead = require('./read'); var callbackResult = require('./callback_result'); var helper_format_checker = require('../../../helpers/h_format_checker'); module.exports = function (collectionName, attributeObjectUpdated, beforeCreateTransformation, params) { return new Promise(function (resolve, reject) { try { if (helper_format_checker.isNil(params)) { throw new RigorousError(errorTypes.RESPONSE_ERROR_OPERATION); } if (helper_format_checker.isNil(params.selectAttributesReturned) && helper_format_checker.isObjectEmpty(params.selectAttributesReturned)) { throw new RigorousError(errorTypes.RESPONSE_ERROR_OPERATION); } if (beforeCreateTransformation) { // dynamic Transformation beforeCreateTransformation(attributeObjectUpdated); } // Create mongoose.model(collectionName).create(attributeObjectUpdated, function (err, resultUnfiltered) { callbackResult.exec(err, resultUnfiltered).then(function (result) { var ids = []; if (Array.isArray(result)) { result.forEach(function (resultUnit) { ids.push(resultUnit.id); }); } else { ids.push(result.id); } mongoRead(collectionName, { _id: { $in: ids } }, params).then(function (resultJson) { return resolve(resultJson); }); })["catch"](function (err2) { return reject(err2); }); }); } catch (errGlobal) { reject(errGlobal); } }); };