高级用法
原始内容
访问应用中的内容原始数据
在内容版本 2 中,有很多关于在生产环境访问内容原始数据的请求。在内容版本 3 中,可以将内容原始数据传递到生产环境。
为了将原始内容传递到生产环境,您需要在集合的 schema 中定义 rawbody
字段。就是这么简单。
Nuxt Content 会检测到 schema 中这个神奇的字段,并用原始内容填充它。
content.config.ts
import { defineCollection, defineContentConfig, z } from '@nuxt/content'
export default defineContentConfig({
collections: {
docs: defineCollection({
source: '**',
type: 'page',
schema: z.object({
rawbody: z.string()
})
})
}
})
您可以使用 queryCollection()
来获取原始内容。
pages/index.vue
<script setup lang="ts">
const route = useRoute()
const { data } = useAsyncData('page-' + route.path, () => queryCollection('docs').path(route.path).first())
</script>
<template>
<pre>{{ data.rawbody }}</pre>
</template>
如果您不想传递某个文件的原始内容,可以在该文件的 frontmatter 中添加 rawbody: ''
。rawbody
的自动填充值就像一个默认值,当您在 frontmatter 中定义了 rawbody
时,会覆盖自动填写的值。
content.md
---
title: 我的页面
rawbody: ''
---
重要的是要确保 frontmatter 字段的数据类型与集合 schema 中定义的类型相同。在本例中,
rawbody
是字符串类型,您应考虑传递空字符串。请勿使用布尔值或其他类型的值。