នៅ​ក្នុង​កម្មវិធី Astro ទិន្នន័យ​ទាំងឡាយ​អាចត្រូវ​រក្សា​ទុក​នៅ​ក្នុង​មូលដ្ឋាន​ទិន្នន័យ​នៅ​លើ server ផ្សេង​ៗ ដូច​ជា​មូលដ្ឋាន​ទិន្នន័យ MySQL, PosgreSQL, MongoDB ជាដើម​។ ក៏ប៉ុន្តែ កម្មវិធី Astro ក៏អនុញ្ញាតិ​អោយ​យើង​អាច​រក្សា​ទិន្នន័យ​ទាំងនោះ​ទុក​នៅ​ក្នុងថត src/content នៃ​កម្មវិធីគេហទំព័រ​របស់​យើង​ផ្ទាល់​តែ​ម្តង​ក៏​បាន​ដែរ​។ ហើយ​ទិន្នន័យ​ដែល​ត្រូវ​រក្សា​ទុក ត្រូវ​កត់​ត្រា​នៅ​ក្នុងឯកសារ​មាន​ប្រភេទ​ជា MD (.md), MDX (.mdx), ឬ YAML (.yaml) ។

 

មុន​នឹង​អាច​រក្សា​ឯកសារ​ដែល​ជា​ទិន្នន័យ​ទាំងឡាយ​ទុកនៅ​ក្នុងថត src/content នេះ​បាន យើង​ចាំបាច់​ត្រូវ​​ធ្វើ​ការកែប្រែ​ឯកសារ tsconfig.json ដូ​ច​ខាង​ក្រោម​នេះ៖

 

// tsconfig.json

{
  "extends": "astro/tsconfigs/base",
  "compilerOptions": {
    "strictNullChecks": true
  }

}

 

បន្ទាប់​មកទៀត​ យើង​ត្រូវ​បង្កើតឯកសារ​មួយ​មាន​ឈ្មោះ​ថា config.ts ដែល​នៅ​ក្នុង​នោះ​ យើង​ត្រូវ​បង្កើត schema សំរាប់​ទិន្នន័យ​របស់​យើង។

 

// src/content/config.ts

import { z, defineCollection } from 'astro:content'

const postCollection = defineCollection({
    type: 'content', // v2.5.0 and later
    schema: z.object({
      title: z.string(),
      author: z.string(),​
      image: z.string().optional(),​
    }),​
  })

  export const collections = {
    'posts': postCollection,
  }

 

---
title: "ការផ្សាយលើក​ទី ១"
author: "កែវ សុភ័ក្រ"
---
<!--src/content/posts/post-1.md-->

## ឯកសារទី ១

 

​​​បើសិន​ជា​កម្មវិធី Astro មិនអាច​រក​ឃើញសាស្ត្រា astro:content នេះ​​ទេ យើង​ត្រូវសាកល្បង​ដំណើរការ​សារជាថ្មី​ឡើង​វិញ​នូវ​កម្មវិធីគេហទំព័រ​របស់​យើង​។

 

កូដ​ខាង​លើ​នេះ​គ្រាន់​តែ​ជា​ឧទាហរណ៍​ដ៏​តូច​មួយ​នៃ​ការបង្កើត​ schema ឬ​ទំរង់​នៃ​ប្រភេទ​ទិន្នន័យ​​សំរាប់​បណ្តុំ​ទិន្នន័យ “posts” នៅ​ក្នុង​ថត src/content ។ នៅ​ក្នុង​កម្មវិធី​ជាក់​ស្តែង schema អាច​មានច្រើន​ជាង​នេះ​។

 

អត្ថប្រយោជន៍​នៃ​ការបង្កើត schema គឺ​វា​ជួយ​ត្រួត​ពិនិត្យ​ឯកសារ​ដែល​ជា​ទិន្នន័យ​​របស់​យើង​ថា​តើ​ឯកសារ​នោះ​មាន​ទិន្នន័យ​នៅ​ក្នុង frontmatter មានចំនួន​និង​ប្រភេទ​សមស្រប​ទៅ​តាម​ schema ដែរ​ឬទេ​។ បើ​មិន​សមស្រប​ទេ វា​នឹង​ប្រាប់​យើង​ពី​កំហុស​ផ្សេង​ៗ​​នៅ​ក្នុង frontmatter ។

 

កម្មវិធី Astro ប្រើប្រាស់​កញ្ចប់ Zod នៅ​ក្នុង​ការបង្កើត​ schema ហើយ​ការនាំ​ចូល​កញ្ចប់​នេះ ត្រូវ​តាង​ដោយ​អក្សរ z ។ បើយើង​ចង់​បាន​ព័ត៌មាន​បន្ថែម​ស្តី​ពី​កញ្ចប់ Zod យើង​អាច​ចូល​ទៅ​អាន​គេហទំព័រ​មួយ​នេះ https://zod.dev/

 

បើ​សិន​ជា​យើង​មាន​បណ្តុំ​ទិន្នន័យ​​ពីរ យើង​អាច​បង្កើត schema នៃ​បណ្តុំ​ទិន្នន័យ​មួយដោយ​យោង​ទៅ​លើ​បណ្តុំទិន្នន័យ​មួយ​ទៀតបាន។

 

// src/content/config.ts

import { z, defineCollection, reference } from 'astro:content'

const authorCollection = defineCollection({
  type: 'content',
  schema: z.object({
    name: z.string(),
    email: z.string().email()
  })
})

const postCollection = defineCollection({
    type: 'content', // v2.5.0 and later
    schema: z.object({
      title: z.string(),
      author: reference('authors'),
      image: z.string().optional(),
    }),
  })

  export const collections = {
    'posts': postCollection,
    'authors': authorCollection,
  }

 

---
title: "ការផ្សាយលើក​ទី ១"
author: "author-1"
---
<!--src/content/posts/post-1.md-->

## ឯកសារទី ១

 

---
name: "កែវ សុភ័ក្រ"
email: "sophak@gmail.com"
---
<!--src/content/authors/author-1.md-->

## អ្នក​និពន្ធ​ទី ១