/** * 数据验证和清理工具函数 * @module services/utils/validators */ /** * 清理并验证整数 * @param {*} value - 输入值 * @param {number} [fallback] - 默认值 * @param {number} [min] - 最小值 * @param {number} [max] - 最大值 * @returns {number|null} 清理后的整数或 null */ function sanitizeInt(value, fallback, min, max) { if (value === undefined || value === null || value === '') return fallback const n = parseInt(value, 10) if (isNaN(n)) return null if (min !== undefined && n < min) return null if (max !== undefined && n > max) return null return n } /** * 清理并验证浮点数 * @param {*} value - 输入值 * @param {number} [fallback] - 默认值 * @param {number} [min] - 最小值 * @param {number} [max] - 最大值 * @returns {number|null} 清理后的浮点数或 null */ function sanitizeFloat(value, fallback, min, max) { if (value === undefined || value === null || value === '') return fallback const n = parseFloat(value) if (isNaN(n)) return null if (min !== undefined && n < min) return null if (max !== undefined && n > max) return null return n } /** * 清理并验证字符串 * @param {*} value - 输入值 * @param {number} [max=255] - 最大长度 * @returns {string} 清理后的字符串 */ function sanitizeString(value, max = 255) { if (value === undefined || value === null) return '' const s = String(value) return s.length > max ? s.slice(0, max) : s } module.exports = { sanitizeInt, sanitizeFloat, sanitizeString }