UNPKG

koa-typescript-sequlize-swagger

Version:

nodejs的后端模板,使用了koa,typescript,koa-swagger-decorator,zod等

61 lines (56 loc) 2.35 kB
// 对返回的响应状态进行规范 /* * 强制传入的数据返回指定的格式 * */ export const ctxBody = (requestBody: any) => { const hopeResult = { code: 500, msg: '响应失败辣', success: false, data: {} } return Object.assign(hopeResult, requestBody) } /* * 对传入的对象进行简单的校验 * @param params 目标参数 * @param paramType 模板参数 * */ export const checkDesign = (params: any, paramType: Record<string, { required?: boolean, validator?: (value: any) => boolean }>): Promise<any> => { return new Promise((resolve, reject) => { try { const result = {} const missing: string[] = [] const invalid: { [key: string]: string } = {} // 存储无效参数及其原因 // 遍历模板参数,检查目标参数是否包含对应的键并验证其值 for (const key in paramType) { if (Object.prototype.hasOwnProperty.call(paramType, key)) { const { required = true, validator } = paramType[key] if (required && (params[key] === undefined || params[key] === null || (typeof params[key] === 'string' && params[key].trim() === ''))) { missing.push(key) } else if (validator && params[key] !== undefined && !validator(params[key])) { invalid[key] = `Invalid value for ${key}` } else if (params[key] !== undefined) { result[key] = params[key] } } } // 检查是否有额外的参数 const extra: string[] = Object.keys(params).filter(key => !(key in paramType)) // 使用 Object.assign 将结果和缺失项、无效项合并到一个对象中 const response = Object.assign({}, { result, missing, invalid, extra }) // 如果有缺失或无效的参数,可以根据业务逻辑决定是抛出错误还是简单地返回它们 if (missing.length > 0 || Object.keys(invalid).length > 0 || extra.length > 0) { console.warn('Validation issues:', { missing, invalid, extra }) // 这里可以选择抛出错误或者返回包含问题的结果 // throw new Error(JSON.stringify({ missing, invalid, extra })); } resolve(response) // 返回合并后的对象 } catch (error) { reject(error) } }) }