50 lines
1.4 KiB
JavaScript
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();
|