const mongoose = require('mongoose'); const Post = require('./models/Post'); // 连接数据库 mongoose.connect('mongodb://127.0.0.1:27017/blog', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => { console.log('数据库连接成功'); fixDatabase(); }) .catch(err => { console.error('数据库连接失败:', err); process.exit(1); }); async function fixDatabase() { try { console.log('开始检查和修复数据库...\n'); // 查找所有文章 const posts = await Post.find({}); console.log(`找到 ${posts.length} 篇文章`); let fixedCount = 0; for (let post of posts) { let needsUpdate = false; let updates = {}; // 检查并修复title字段 if (!post.title || post.title.trim() === '') { updates.title = '无标题'; needsUpdate = true; console.log(`修复文章 ${post._id} 的标题`); } // 检查并修复content字段 if (!post.content || post.content.trim() === '') { updates.content = '暂无内容'; needsUpdate = true; console.log(`修复文章 ${post._id} 的内容`); } // 检查并修复author字段 if (!post.author || post.author.trim() === '') { updates.author = '未知作者'; needsUpdate = true; console.log(`修复文章 ${post._id} 的作者`); } // 检查并修复category字段 if (!post.category || post.category.trim() === '') { updates.category = '未分类'; needsUpdate = true; console.log(`修复文章 ${post._id} 的分类`); } // 添加缺失的字段 if (post.isPublished === undefined) { updates.isPublished = true; needsUpdate = true; console.log(`为文章 ${post._id} 添加发布状态`); } if (post.isTop === undefined) { updates.isTop = false; needsUpdate = true; console.log(`为文章 ${post._id} 添加置顶状态`); } if (post.updatedAt === undefined) { updates.updatedAt = post.createdAt || new Date(); needsUpdate = true; console.log(`为文章 ${post._id} 添加更新时间`); } // 更新数据库 if (needsUpdate) { await Post.findByIdAndUpdate(post._id, updates); fixedCount++; } } console.log(`\n修复完成!共修复了 ${fixedCount} 篇文章`); // 显示修复后的统计信息 const totalPosts = await Post.countDocuments(); const publishedPosts = await Post.countDocuments({ isPublished: true }); const topPosts = await Post.countDocuments({ isTop: true }); console.log('\n数据库统计信息:'); console.log(`- 总文章数: ${totalPosts}`); console.log(`- 已发布: ${publishedPosts}`); console.log(`- 置顶文章: ${topPosts}`); mongoose.connection.close(); } catch (error) { console.error('修复数据库失败:', error); mongoose.connection.close(); } }