ការស្រង់​យក​ទិន្នន័យ​ពី​ក្នុង​បណ្តុំ​ទិន្នន័យ ត្រូវ​ធ្វើឡើង​តាម​រយៈក្បួន getCollection( ) និងឬ​ក្បួន getEntry​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​( ) នៅ​ក្នុង​សាស្ត្រា astro:content។ ក្បួន getCollection( ) ​​​​​​​​​ត្រូវប្រើ​សំរាប់ស្រង់​យក​បណ្តុំ​ទិន្នន័យទាំងមូល ចំណែកឯ​ក្បួន getEntry( ) ត្រូវ​ប្រើ​សំរាប់​ស្រង់​យកឯកសារ​​ទិន្នន័យ​តែ​មួយ​។ ចំពោះ​ទិន្នន័យ​ដែល​យោង​ទៅ​លើបណ្តុំទិន្នន័យ​ផ្សេង​ទៀត យើង​ចាំបាច់​ត្រូវ​ស្រង់​យក​ទិន្នន័យ​នោះ​ជា​លើក​ទី ២ ពី​បណ្តុំទិន្នន័យ​ផ្សេង​ទៀត​នោះ​។

 

<!--src/pages/posts/[slud].astro-->
---
import { getCollection, getEntry } from 'astro:content'

const { slug } = Astro.params
const post = await getEntry('posts', slug)
const author = await getEntry(post.data.author)
const { Content, headings } = await post.render()
---
<h1>​​​​​​​​​​​​​​​​​​​​​​​​​​​{post.data.title}</h1>
<p>និពន្ធ​ដោយ: {author.data.name}</p>
<Content/>

 

ការស្រង់​យក​បណ្តុំ​ទិន្នន័យ​ដោយ​ប្រើប្រាស់​ក្បួន getCollection( ) អាច​ត្រូវ​ធ្វើ​ឡើង​ដោយ​ច្រោះ​យ​ក​តែ​ទិន្នន័យ​ណា​ដែលយើង​ត្រូវ​ការ។

 

<!--src/pages/posts/[slud].astro-->
---
import { getCollection, getEntry } from 'astro:content'

const { slug } = Astro.params
const posts = await getCollection('posts',  (post) => {return post.slug === slug})
const author = await getEntry(posts[0].data.author)
const { Content, headings } = await posts[0].render()
---
<h1>​​​​​​​​​​​​​​​​​​​​​​​​​​​{posts[0].data.title}</h1>
<p>និពន្ធ​ដោយ: {author.data.name}</p>
<Content/>

 

ក្នុង​ករណី​ដែល​យើង​ប្រើប្រាស់​របៀប SSG ការបង្កើត​ផ្លូវ​ត្រូវ​ធ្វើ​ឡើង​សំរាប់​គ្រប់​ផ្លូវ​ទាំងអស់​។ ហើយ​បើ​យើង​ជ្រុល​ជា​កែប្រែ​កម្មវិធី​របស់​យើង​អោយ​ប្រើប្រាស់​របៀប SSR យើង​អាច​ត្រឡប់​ទៅ​ប្រើ​របៀប SSG វិញ​បាន​ ដោយ​កែប្រែ​ឯកសារ astro.config.mjs ដូច​ខាង​ក្រោម​នេះ៖

 

import { defineConfig } from 'astro/config';

// import node from "@astrojs/node";

// https://astro.build/config
export default defineConfig({
  /*
  output: "server",
  adapter: node({
    mode: "standalone"
  })
  */
});

 

បើយើង​ប្រើប្រាស់​របៀប SSG ការបង្កើត​ផ្លូវ​របស់​យើង​ត្រូវ​ប្រើ​ក្បួន getStaticPaths( ) ដោយ​​ធ្វើ​ដូច​ខាង​ក្រោម​នេះ៖

 

<!--src/pages/posts/[slud].astro-->
---
import { getCollection, getEntry } from 'astro:content'

export async function getStaticPaths() {
    const posts = await getCollection('posts')
    return posts.map(post => ({
      params: { slug: post.slug }, props: { post },
    }))
}

const { slug } = Astro.params
const { post } = Astro.props
const author = await getEntry(post.data.author)
const { Content, headings } = await post.render()
---
<h1>​​​​​​​​​​​​​​​​​​​​​​​​​​​{ post.data.title }</h1>
<p>និពន្ធ​ដោយ: { author.data.name }</p>
<Content/>