នៅ​ក្នុង​មូលដ្ឋាន​ទិន្នន័យ MongoDB ទិន្នន័យ​ទាំងឡាយ​ត្រូវ​ស្ថិត​នៅ​ក្នុង​បណ្តុំ​ទិន្នន័យ​ (collection) ឬ​ជំពូក​ខុស​ៗ​គ្នា​ មាន​ដូចជា​បណ្តុំ​ទិន្នន័យ Post, Page, Category, User ជាដើម​។  ជាកិច្ច​ចាប់​ផ្តើម យើង​នឹង​បង្កើត​បណ្តុំ​ទិន្នន័យ User មួយ ដោយ​បង្កើត Schema នៃ​បណ្តុំ​ទិន្នន័យ​នេះ​នៅ​ក្នុង​ឯកសារ prisma/schema.prisma ។

 

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mongodb"
  url      = env("MONGO_URL")
}

model User {
  id      String   @id @default(auto()) @map("_id") @db.ObjectId
  email   String   @unique
  title   String
  password String
  role    String
  thumb   String
  content String
  date    String
}

 

នៅ​ពេល​ដែល schema នៃ​បណ្តុំ​ទិន្នន័យ User ត្រូវ​បាន​បង្កើត​រួច​ហើយ ការបង្កើត​ទិន្នន័យ​សំរាប់​​អ្នក​ប្រើប្រាស់​ណា​ម្នាក់​អាច​ត្រូវ​ធ្វើ​ឡើង​នៅ​ក្នុង​ក្បួន​ចុង​ផ្លូវ​នៅ​ក្នុង​ឯកសារ src/pages/api/login.js ។

 

// src/pages/api/login.js

import bcrypt from "bcryptjs"

export async function GET({params, request, locals}){
  const prisma = locals.prisma
  const hashPassword = bcrypt.hashSync("password", 8)

  await prisma.user.create({
    data: {
      email: "guest@khmerweb.app",
      title: "Guest",
      password: hashPassword,
      role: "Guest",
      thumb: "",
      content: "",
      date: ""
    }
  })

  const allUsers = await prisma.user.findMany()

  return new Response(
    JSON.stringify({
      users: allUsers
    })
  )
}

 

នៅ​ពេល​ដែលយើង​បើក browser និង​ចូល​ទៅ​កាន់​អាស័យដ្ឋាន http://localhost:4321/api/login យើង​នឹង​ឃើញ​លទ្ធផល​នៅ​លើ browser បង្ហាញ​ពី​ទិន្នន័យ​នៃ​អ្នកប្រើប្រាស់​ថ្មី​ដែល​ទើប​ត្រូវ​បាន​បង្កើត​ឡើង​នោះ​។

 

នៅ​ក្នុង​ក្បួន​ចុង​ផ្លូវ​ខាង​លើ​នេះ មាន​ការប្រើប្រាស់​កញ្ចប់ bcryptjs ក្នុង​ការកែ​ពាក្យ​សំងាត់​​អោយ​ទៅ​ជាកូដ​ដែល​មនុស្ស​ធម្មតា​មិន​អាច​មើល​យល់ មាន​តែ​កំព្យូទ័រ​ប៉ុណ្ណោះ​ដែល​មើល​យល់​។ ការធ្វើ​របៀប​នេះ​គឺ​ការបង្កា​មិន​អោយ​ពាក្យ​សំងាត់​របស់​អ្នក​ប្រើប្រាស់​អាច​ត្រូវ​គេ​លួច​យក​ទៅ​ប្រើប្រាស់​​បាន​។ យើង​ត្រូវ​តំឡើង​កញ្ចប់​ bcryptjs នេះ​ដោយ​សរសេរ​កូដ​នៅ​លើ​បង្អួច Terminal ថា៖

 

npm install bcryptjs

 

មួយវិញទៀត យើង​ចាំបាច់​ត្រូវ​បន្ថែម​កូដ​មួយ​បន្ទាត់​ដូច​ខាង​ក្រោម​នេះ​​ចូល​ទៅ​ក្នុង​ឯកសារ package.json នៅ​ត្រង់​កន្លែង​ដែលមាន​​ពាក្យ scripts នៅ​ក្នុង​​នោះ ទើប​កញ្ចប់ Prisma អាច​ដំណើរការ​បាន​នៅ​លើ​ប្រព័ន្ធ Netlify ។

 

"postinstall": "prisma generate"

 

{
  "name": "dynamic-blog",
  "type": "module",
  "version": "0.0.1",
  "scripts": {
    "dev": "astro dev",
    "start": "astro dev",
    "build": "astro build",
    "preview": "astro preview",
    "astro": "astro",
    "postinstall": "prisma generate"
  },
  "dependencies": {
    "@astrojs/netlify": "^3.0.2",
    "@astrojs/tailwind": "^5.0.0",
    "@prisma/client": "^5.3.1",
    "astro": "^3.1.4",
    "bcryptjs": "^2.4.3",
    "jsonwebtoken": "^9.0.2",
    "tailwindcss": "^3.3.3"
  },
  "devDependencies": {
    "prisma": "^5.3.1"
  }
}

 

Netlify: https://khmerweb-dynamic-blog.netlify.app

GitHub: https://github.com/Sokhavuth/dynamic-blog