Files
2026-06-03 14:15:55 +08:00

53 lines
1.5 KiB
JavaScript

/**
* 数据验证和清理工具函数
* @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 }