check-chapters.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. const { PrismaClient } = require('@prisma/client');
  2. const prisma = new PrismaClient();
  3. async function checkChapters() {
  4. const bookId = 1; // 从URL看是bookId=1
  5. const chapters = await prisma.bookChapter.findMany({
  6. where: { bookId },
  7. orderBy: [
  8. { level: 'asc' },
  9. { number: 'asc' }
  10. ],
  11. select: {
  12. id: true,
  13. number: true,
  14. title: true,
  15. level: true,
  16. parentId: true
  17. }
  18. });
  19. console.log(`书籍 ${bookId} 的章节数据:`);
  20. console.log('='.repeat(80));
  21. chapters.forEach(ch => {
  22. const indent = ' '.repeat(ch.level - 1);
  23. console.log(`${indent}[Level ${ch.level}] ID=${ch.id}, Number=${ch.number}, ParentId=${ch.parentId}, Title=${ch.title}`);
  24. });
  25. console.log('='.repeat(80));
  26. console.log(`总共 ${chapters.length} 条记录`);
  27. // 检查是否有异常的number值
  28. const level1Chapters = chapters.filter(c => c.level === 1);
  29. console.log(`\nLevel 1 (章) 共 ${level1Chapters.length} 个:`);
  30. level1Chapters.forEach(c => {
  31. console.log(` ID=${c.id}, Number=${c.number}, Title=${c.title}`);
  32. });
  33. const level2Chapters = chapters.filter(c => c.level === 2);
  34. console.log(`\nLevel 2 (节) 共 ${level2Chapters.length} 个:`);
  35. level2Chapters.slice(0, 10).forEach(c => {
  36. console.log(` ID=${c.id}, Number=${c.number}, ParentId=${c.parentId}, Title=${c.title}`);
  37. });
  38. if (level2Chapters.length > 10) {
  39. console.log(` ... 还有 ${level2Chapters.length - 10} 个`);
  40. }
  41. await prisma.$disconnect();
  42. }
  43. checkChapters().catch(console.error);