[{"data":1,"prerenderedAt":583},["ShallowReactive",2],{"docs-/docs/framework/validators":3,"docs-surround-/docs/framework/validators":514,"sidebar-docs":524},{"id":4,"title":5,"body":6,"category":502,"description":503,"extension":504,"links":505,"meta":506,"navigation":507,"order":505,"path":510,"seo":511,"stem":512,"__hash__":513},"docs/docs/framework/validators.md","模式验证器",{"type":7,"value":8,"toc":496},"minimark",[9,13,18,21,349,353,356,376,379,475,478,492],[10,11,12],"p",{},"Nuxt Content 支持为集合定义 schema。schema 可以约束 frontmatter 字段、减少内容录入错误，并让查询结果拥有更清晰的类型。",[14,15,17],"h2",{"id":16},"使用-zod","使用 Zod",[10,19,20],{},"项目可以使用 Zod 定义集合字段：",[22,23,28],"pre",{"className":24,"code":25,"language":26,"meta":27,"style":27},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineCollection, defineContentConfig } from '@nuxt/content'\nimport { z } from 'zod'\n\nexport default defineContentConfig({\n  collections: {\n    blog: defineCollection({\n      type: 'page',\n      source: 'blog/**/*.md',\n      schema: z.object({\n        title: z.string(),\n        description: z.string().optional(),\n        date: z.string(),\n        category: z.string().optional(),\n        tags: z.array(z.string()).optional()\n      })\n    })\n  }\n})\n","ts","",[29,30,31,70,91,98,116,129,143,162,179,199,219,244,262,286,318,327,335,341],"code",{"__ignoreMap":27},[32,33,36,40,44,48,51,54,57,60,63,67],"span",{"class":34,"line":35},"line",1,[32,37,39],{"class":38},"s7zQu","import",[32,41,43],{"class":42},"sMK4o"," {",[32,45,47],{"class":46},"sTEyZ"," defineCollection",[32,49,50],{"class":42},",",[32,52,53],{"class":46}," defineContentConfig",[32,55,56],{"class":42}," }",[32,58,59],{"class":38}," from",[32,61,62],{"class":42}," '",[32,64,66],{"class":65},"sfazB","@nuxt/content",[32,68,69],{"class":42},"'\n",[32,71,73,75,77,80,82,84,86,89],{"class":34,"line":72},2,[32,74,39],{"class":38},[32,76,43],{"class":42},[32,78,79],{"class":46}," z",[32,81,56],{"class":42},[32,83,59],{"class":38},[32,85,62],{"class":42},[32,87,88],{"class":65},"zod",[32,90,69],{"class":42},[32,92,94],{"class":34,"line":93},3,[32,95,97],{"emptyLinePlaceholder":96},true,"\n",[32,99,101,104,107,110,113],{"class":34,"line":100},4,[32,102,103],{"class":38},"export",[32,105,106],{"class":38}," default",[32,108,53],{"class":109},"s2Zo4",[32,111,112],{"class":46},"(",[32,114,115],{"class":42},"{\n",[32,117,119,123,126],{"class":34,"line":118},5,[32,120,122],{"class":121},"swJcz","  collections",[32,124,125],{"class":42},":",[32,127,128],{"class":42}," {\n",[32,130,132,135,137,139,141],{"class":34,"line":131},6,[32,133,134],{"class":121},"    blog",[32,136,125],{"class":42},[32,138,47],{"class":109},[32,140,112],{"class":46},[32,142,115],{"class":42},[32,144,146,149,151,153,156,159],{"class":34,"line":145},7,[32,147,148],{"class":121},"      type",[32,150,125],{"class":42},[32,152,62],{"class":42},[32,154,155],{"class":65},"page",[32,157,158],{"class":42},"'",[32,160,161],{"class":42},",\n",[32,163,165,168,170,172,175,177],{"class":34,"line":164},8,[32,166,167],{"class":121},"      source",[32,169,125],{"class":42},[32,171,62],{"class":42},[32,173,174],{"class":65},"blog/**/*.md",[32,176,158],{"class":42},[32,178,161],{"class":42},[32,180,182,185,187,189,192,195,197],{"class":34,"line":181},9,[32,183,184],{"class":121},"      schema",[32,186,125],{"class":42},[32,188,79],{"class":46},[32,190,191],{"class":42},".",[32,193,194],{"class":109},"object",[32,196,112],{"class":46},[32,198,115],{"class":42},[32,200,202,205,207,209,211,214,217],{"class":34,"line":201},10,[32,203,204],{"class":121},"        title",[32,206,125],{"class":42},[32,208,79],{"class":46},[32,210,191],{"class":42},[32,212,213],{"class":109},"string",[32,215,216],{"class":46},"()",[32,218,161],{"class":42},[32,220,222,225,227,229,231,233,235,237,240,242],{"class":34,"line":221},11,[32,223,224],{"class":121},"        description",[32,226,125],{"class":42},[32,228,79],{"class":46},[32,230,191],{"class":42},[32,232,213],{"class":109},[32,234,216],{"class":46},[32,236,191],{"class":42},[32,238,239],{"class":109},"optional",[32,241,216],{"class":46},[32,243,161],{"class":42},[32,245,247,250,252,254,256,258,260],{"class":34,"line":246},12,[32,248,249],{"class":121},"        date",[32,251,125],{"class":42},[32,253,79],{"class":46},[32,255,191],{"class":42},[32,257,213],{"class":109},[32,259,216],{"class":46},[32,261,161],{"class":42},[32,263,265,268,270,272,274,276,278,280,282,284],{"class":34,"line":264},13,[32,266,267],{"class":121},"        category",[32,269,125],{"class":42},[32,271,79],{"class":46},[32,273,191],{"class":42},[32,275,213],{"class":109},[32,277,216],{"class":46},[32,279,191],{"class":42},[32,281,239],{"class":109},[32,283,216],{"class":46},[32,285,161],{"class":42},[32,287,289,292,294,296,298,301,304,306,308,311,313,315],{"class":34,"line":288},14,[32,290,291],{"class":121},"        tags",[32,293,125],{"class":42},[32,295,79],{"class":46},[32,297,191],{"class":42},[32,299,300],{"class":109},"array",[32,302,303],{"class":46},"(z",[32,305,191],{"class":42},[32,307,213],{"class":109},[32,309,310],{"class":46},"())",[32,312,191],{"class":42},[32,314,239],{"class":109},[32,316,317],{"class":46},"()\n",[32,319,321,324],{"class":34,"line":320},15,[32,322,323],{"class":42},"      }",[32,325,326],{"class":46},")\n",[32,328,330,333],{"class":34,"line":329},16,[32,331,332],{"class":42},"    }",[32,334,326],{"class":46},[32,336,338],{"class":34,"line":337},17,[32,339,340],{"class":42},"  }\n",[32,342,344,347],{"class":34,"line":343},18,[32,345,346],{"class":42},"}",[32,348,326],{"class":46},[14,350,352],{"id":351},"为什么需要-schema","为什么需要 schema",[10,354,355],{},"schema 能帮助团队在内容层提前发现问题：",[357,358,359,363,370,373],"ul",{},[360,361,362],"li",{},"标题、日期等必填字段缺失。",[360,364,365,366,369],{},"字段类型不一致，例如 ",[29,367,368],{},"tags"," 写成字符串。",[360,371,372],{},"内容列表需要排序但日期格式不稳定。",[360,374,375],{},"页面 SEO 依赖的描述字段为空。",[14,377,378],{"id":378},"常见字段",[380,381,382,398],"table",{},[383,384,385],"thead",{},[386,387,388,392,395],"tr",{},[389,390,391],"th",{},"字段",[389,393,394],{},"类型",[389,396,397],{},"用途",[399,400,401,414,426,438,450,463],"tbody",{},[386,402,403,409,411],{},[404,405,406],"td",{},[29,407,408],{},"title",[404,410,213],{},[404,412,413],{},"页面标题",[386,415,416,421,423],{},[404,417,418],{},[29,419,420],{},"description",[404,422,213],{},[404,424,425],{},"SEO 描述和列表摘要",[386,427,428,433,435],{},[404,429,430],{},[29,431,432],{},"date",[404,434,213],{},[404,436,437],{},"发布时间或更新日期",[386,439,440,445,447],{},[404,441,442],{},[29,443,444],{},"category",[404,446,213],{},[404,448,449],{},"分类",[386,451,452,456,460],{},[404,453,454],{},[29,455,368],{},[404,457,213,458],{},[32,459],{},[404,461,462],{},"标签",[386,464,465,470,472],{},[404,466,467],{},[29,468,469],{},"image",[404,471,213],{},[404,473,474],{},"封面图",[14,476,477],{"id":477},"使用建议",[357,479,480,483,486,489],{},[360,481,482],{},"先为公开页面内容补齐基础 schema，再逐步扩展复杂字段。",[360,484,485],{},"对数组、日期、图片等容易写错的字段增加校验。",[360,487,488],{},"schema 不应过度复杂，避免内容维护成本过高。",[360,490,491],{},"修改 schema 后，应运行类型检查和静态生成，确认所有内容仍能通过解析。",[493,494,495],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":27,"searchDepth":72,"depth":72,"links":497},[498,499,500,501],{"id":16,"depth":72,"text":17},{"id":351,"depth":72,"text":352},{"id":378,"depth":72,"text":378},{"id":477,"depth":72,"text":477},"进阶教程","使用验证器定义内容集合 schema，并获得更稳定的内容结构。","md",null,{},{"title":508,"icon":509},"验证器","i-lucide-check-circle","/docs/framework/validators",{"title":5,"description":503},"docs/framework/validators","mcOXJ1E5xUiUwlUfAwEmo0yRuL-l7ao4xBrLc9t4vw8",[515,519],{"title":394,"path":516,"stem":517,"icon":518,"children":-1},"/docs/framework/types","docs/framework/types","i-lucide-file-text",{"title":520,"path":521,"stem":522,"icon":523,"children":-1},"宝塔部署","/docs/introduction/bt","docs/introduction/1.bt","i-lucide-server",[525,530,535,541,544,546,550,556,562,568,573,578],{"title":526,"path":527,"category":502,"order":505,"navigation":528},"定义内容集合","/docs/framework/define",{"title":529,"icon":518},"定义",{"title":531,"path":532,"category":502,"order":505,"navigation":533},"前置准备","/docs/framework/prerequisites",{"title":531,"icon":534},"i-lucide-database",{"title":536,"path":537,"category":502,"order":505,"navigation":538},"集合源","/docs/framework/sources",{"title":539,"icon":540},"源","i-lucide-upload",{"title":542,"path":516,"category":502,"order":505,"navigation":543},"集合类型",{"title":394,"icon":518},{"title":5,"path":510,"category":502,"order":505,"navigation":545},{"title":508,"icon":509},{"title":547,"path":521,"category":548,"order":505,"navigation":549},"宝塔面板部署","入门指南",{"title":520,"icon":523},{"title":551,"path":552,"category":548,"order":505,"navigation":553},"开源与商业化","/docs/introduction/configuration",{"title":554,"icon":555},"商业化","i-lucide-dollar-sign",{"title":557,"path":558,"category":548,"order":505,"navigation":559},"蓝网AI介绍","/docs/introduction/start",{"title":560,"icon":561},"介绍","i-lucide-info",{"title":563,"path":564,"category":548,"order":505,"navigation":565},"迁移指南","/docs/introduction/migration",{"title":566,"icon":567},"迁移","i-lucide-arrow-right",{"title":569,"path":570,"category":548,"order":505,"navigation":571},"手动安装","/docs/introduction/manual-installation",{"title":569,"icon":572},"i-lucide-terminal",{"title":574,"path":575,"category":548,"order":505,"navigation":576},"Docker安装","/docs/introduction/docker-installation",{"title":574,"icon":577},"i-lucide-box",{"title":579,"path":580,"category":548,"order":505,"navigation":581},"演示环境","/docs/introduction/demo",{"title":579,"icon":582},"i-lucide-download",1783496129692]