check-database.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. const { PrismaClient } = require('@prisma/client');
  2. const prisma = new PrismaClient();
  3. async function checkDatabase() {
  4. try {
  5. console.log('📊 查询 bookId=1 的所有章节记录...\n');
  6. const chapters = await prisma.bookChapter.findMany({
  7. where: { bookId: 1 },
  8. orderBy: [
  9. { level: 'asc' },
  10. { number: 'asc' }
  11. ]
  12. });
  13. console.log(`总记录数: ${chapters.length}\n`);
  14. // 按级别统计
  15. const level1 = chapters.filter(c => c.level === 1);
  16. const level2 = chapters.filter(c => c.level === 2);
  17. const level3 = chapters.filter(c => c.level === 3);
  18. console.log(`章 (level=1): ${level1.length} 条`);
  19. console.log(`节 (level=2): ${level2.length} 条`);
  20. console.log(`小节 (level=3): ${level3.length} 条\n`);
  21. // 显示前5条记录
  22. console.log('前5条记录:');
  23. chapters.slice(0, 5).forEach(c => {
  24. console.log(` ID=${c.id}, level=${c.level}, number=${c.number}, parentId=${c.parentId}, title=${c.title}`);
  25. });
  26. // 检查是否有重复
  27. console.log('\n检查重复 (bookId, parentId, level, number):');
  28. const keyMap = new Map();
  29. chapters.forEach(c => {
  30. const key = `${c.bookId}_${c.parentId}_${c.level}_${c.number}`;
  31. if (keyMap.has(key)) {
  32. console.log(` ⚠️ 重复: ${key}`);
  33. console.log(` 记录1: ID=${keyMap.get(key)}, title=${chapters.find(x => x.id === keyMap.get(key))?.title}`);
  34. console.log(` 记录2: ID=${c.id}, title=${c.title}`);
  35. } else {
  36. keyMap.set(key, c.id);
  37. }
  38. });
  39. console.log('\n✅ 检查完成');
  40. } catch (error) {
  41. console.error('错误:', error);
  42. } finally {
  43. await prisma.$disconnect();
  44. }
  45. }
  46. checkDatabase();