quanyoumi/backend/fix-expense-media.js

50 lines
1.4 KiB
JavaScript

const { Expense } = require('./models');
async function fixExpenseMedia() {
try {
console.log('开始修复经费媒体数据...');
const expenses = await Expense.findAll();
console.log(`找到 ${expenses.length} 条经费记录`);
let fixedCount = 0;
for (const expense of expenses) {
let needUpdate = false;
let media = expense.media || [];
// 检查是否有异常数据
if (Array.isArray(media) && media.length > 5) {
console.log(`经费 #${expense.id}${media.length} 个媒体文件,超过限制`);
media = media.slice(0, 5);
needUpdate = true;
}
// 检查是否有无效的媒体项
const validMedia = media.filter(item => {
return item && item.url && (item.type === 'image' || item.type === 'video');
});
if (validMedia.length !== media.length) {
console.log(`经费 #${expense.id} 有无效媒体项,从 ${media.length} 清理到 ${validMedia.length}`);
media = validMedia;
needUpdate = true;
}
if (needUpdate) {
await expense.update({ media });
fixedCount++;
console.log(`✓ 修复经费 #${expense.id}`);
}
}
console.log(`\n修复完成!共修复 ${fixedCount} 条记录`);
process.exit(0);
} catch (error) {
console.error('修复失败:', error);
process.exit(1);
}
}
fixExpenseMedia();