53 lines
1.5 KiB
JavaScript
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 }
|