UNPKG

sails-hook-blacksails

Version:
125 lines (119 loc) 3.62 kB
import _ from 'lodash'; // import validator from 'validator'; module.exports = { /** * 傳入參數以檢查是否存在該筆資料 * * @export * @param {*} payload:[[Model, columnName, value]] */ async checkNullData(payload) { sails.log.info('ValidatorHelper checkNullData payload=>\n', payload); try { if (!payload) { throw Error(MESSAGE.BAD_REQUEST.NO_REQUIRED_PARAMETER('payload')); } if (!_.isArray(payload)) { throw Error(MESSAGE.BAD_REQUEST.CHECK_INPUT_PARAMETER_TYPE('payload', Array)); } let itemShouldExists; for (const item of payload) { if (item.length !== 3) { // eslint-disable-next-line continue; } // console.log('item[0]=>', item[0].name); if (!item[0]) { throw Error(MESSAGE.BAD_REQUEST.NO_REQUIRED_PARAMETER('1st parameter: model or model name')); } const modelName = item[0].name || item[0]; const model = sails.models[modelName.toLowerCase()]; // console.log('model=>', model); if (!model) { throw Error(MESSAGE.BAD_REQUEST.MODEL_NOT_EXISTS(model)); } const key = item[1]; const value = item[2]; const where = { [key]: value, }; // eslint-disable-next-line itemShouldExists = await model.findOne({ where, attributes: ['id'], }); if (!itemShouldExists) { return `${model.name}.${key}=${value}`; } } return false; } catch (e) { throw e; } }, /** * 參數可直接傳入或以 [] 形式,表示其中一個不為 null 即可 * @export * @param {*} payload * @deprecated 改用 checkNull() * @returns result or throw an Error */ noNull(payload) { sails.log.info('ValidatorHelper noNull payload=>\n', payload); try { if (!payload) { throw Error(MESSAGE.BAD_REQUEST.NO_REQUIRED_PARAMETER('payload')); } if (!_.isArray(payload)) { throw Error(MESSAGE.BAD_REQUEST.CHECK_INPUT_PARAMETER_TYPE('payload', Array)); } const nullParams = payload.some((p) => { if (_.isArray(p)) { // console.log('isArray=>', p); return !p.some(e => !_.isNil(e)); } return _.isNil(p); }); sails.log.info('Parameters include null=>', nullParams); // if (nullParams) { // throw Error(MESSAGE.BAD_REQUEST.NO_REQUIRED_PARAMETER); // } return !nullParams; } catch (e) { throw e; } }, /** * 參數需傳入{}形式,表示其中一個不為 null 即可 * @export * @param {*} payload * @returns result */ checkNull(payload) { sails.log.info('ValidatorHelper checkNull payload=>\n', payload); try { if (!payload) { throw Error(MESSAGE.BAD_REQUEST.NO_REQUIRED_PARAMETER('payload')); } // console.log('Object.keys(payload)=>', Object.keys(payload)); const nullItemIndex = Object .keys(payload) .findIndex((e) => { // console.log('payload[e]=>', payload[e]); const target = payload[e]; const isNull = _.isNil(target); if (!isNull && _.isArray(target)) { return !target.some(i => !_.isNil(i)); } // console.log('lodash=>', isNull); return isNull; }); // console.log('!nullItemIndex=>', nullItemIndex); return (nullItemIndex === -1) ? null : Object.keys(payload)[nullItemIndex]; } catch (err) { throw err; } }, };