បង្កើត​គំរូ​ទិន្នន័យ


ការ​បង្កើតគំរូ​ទិន្នន័យ (data modeling) គឺ​ជាបង្កើត​តារាង​ឬ​បណ្តុំទិន្នន័យ​ផ្សេង​ៗ ដែល​នៅ​ក្នុង​នោះ​មាន​ការតំរៀប​​ទិន្នន័យ​ទៅ​តាម​គំរូ​នៃ​សេចក្តី​ត្រូវការ​ជាក់ស្តែង​ទាំងឡាយ​​។ ឧទារណ៍​​មានដូចជា ​​គំរូទិន្នន័យ (data model) ​សំរាប់​​គេហទំព័រ​សារព័ត៌មាន​ មាន​ភាព​ខុស​ប្លែក​គ្នា​ពី​គំរូ​ទិន្នន័យ​សំរាប់​គេហទំព័រ​លក់​ទំនិញ​។ ប្រការ​នេះ​ធ្វើ​អោយ​ការបង្កើត​គំរូ​ទិន្នន័យ​សំរាប់​គេហទំព័រ​ទាំងនោះ ត្រូវ​ធ្វើ​ឡើង​តាម​របៀប​ខុស​ៗ​គ្នា​​​។

ដោយឡែក​ នៅ​ក្នុង​កម្មវិធី Keystone របស់​យើង​ ការបង្កើត​គំរូ​ទិន្នន័យ​ផ្សេង​ៗ ត្រូវ​ធ្វើ​ឡើង​នៅ​ក្នុង​ឯកសារ​នានា ដែលត្រូវ​ស្ថិតនៅ​ក្នុង​ថត​មួយ​មានឈ្មោះ​ថា models ។ ដូចនេះ មុន​នឹង​បង្កើតគំរូ​ទិន្នន័យ​ណាមួយ យើងចាំបាច់​ត្រូវ​បង្កើតថត​មួយ​មានឈ្មោះថា models នៅ​ក្នុង​ថត​នៃកម្មវិធី keystone របស់​យើង​ជាមុន​សិន​។



បន្ទាប់មកទៀត​ កម្មវិធី keystone ទាមទារ​ចាំបាច់​អោយ​យើង​ត្រូវ​បង្កើតគំរូ​ទិន្នន័យ​​មួយ​សំរាប់​ចុះ​ឈ្មោះនូវ​បណ្តាអ្នកប្រើប្រាស់កម្មវិធី​គេហទំព័រ​របស់​យើង​ទាំងឡាយ ដើម្បី​​ចុះ​ផ្សាយ​ព័ត៌មាន​ឬ​បញ្ចូល​ទិន្នន័យ​ទៅ​ក្នុងមូលដ្ឋាន​ទិន្នន័យ​​​។ យ៉ាងណាម៉ិញ ឯកសារ​ដែល​ជា​គំរូទិន្នន័យ​នោះ​អាច​មានឈ្មោះ​ជា​អ្វី​ក៏​បានដែរ តែ​ភាគ​ច្រើន​គេ​និយម​ដាក់​ឈ្មោះអោយ​ឯកសារនោះ​ថា​ជា User.js ដែលត្រូវ​ស្ថិត​នៅ​ក្នុង​ថត models ។ ជាលទ្ធផល​ បណ្តា​ឯកសារ​នៃ​កម្មវិធី keystone របស់​យើង​ត្រូវ​មាន​ទំរង់​ដូច​ខាង​ក្រោម​នេះ៖
|--keystone
  |--node_modules/
  |--models
  |   |--User.js
  |--package.json
  |--keystone.js
យ៉ាងណាម៉ិញ ការបង្កើតគំរូ​ទិន្នន័យ​នៃ​អ្នក​ប្រើប្រាស់គេហទំព័រ​របស់​យើង ត្រូវ​ធ្វើ​ឡើង​នៅ​ក្នុង​​ឯកសារ User.js ដោយ​ធ្វើដូច​ខាង​ក្រោម​នេះ៖
var keystone = require('keystone');

var User = new keystone.List('User');

User.add({
  displayName: {type: String },
  email: { type: keystone.Field.Types.Email, unique: true },
  password: { type: keystone.Field.Types.Password },
});

User.schema.virtual('canAccessKeystone').get(function () {
  return true;
});

User.defaultColumns = 'id, displayName, email';
User.register();
នៅ​លើបន្ទាត់​លេខ 3 ការសរសេរ​ថា var User = new keystone.List('User'); គឺ​ជាការបង្កើត​វត្ថុ​ឈ្មោះ User មួយ​ដែល​មានប្រភេទ​ជា​គំរូ​ទិន្នន័យ​សំរាប់​កម្មវិធី keystone ។

នៅ​លើ​បន្ទាត់លេខ 5​ ការសរសេរ​ថា User.add({ គឺ​ជាការបង្កើត​គំរូ​ទិន្នន័យ​នៃ​អ្នក​ប្រើប្រាស់​គេហទំព័រ ដែល​នៅ​ក្នុង​នោះ​មានទិន្នន័យ​ចំនួន ៣ គឺ ឈ្មោះ អ៊ីមែល និង ពាក្យ​សំងាត់​។

នៅ​លើបន្ទាត់លេខ 11 ការសរសេរ​ថា User.schema.virtual('canAccessKeystone').get(function () { គឺ​ជាការកំណត់​ថា ឈ្មោះ​នៅ​ក្នុង​គំរូ​ទិន្នន័យ​ខាង​លើ​​នេះ អាច​ប្រើប្រាស់​គេហទំព័រ​បាន​​ដោយ​សេរី​។

នៅ​លើបន្ទាត់​លេខ 15 ការសរសេរ​ថា User.defaultColumns = 'id, displayName, email'; គឺ​ជាការ​កំណត់​​យក​​អត្តសញ្ញាណ ឈ្មោះ និង អ៊ីមែល សំរាប់​បង្កាញ​អ្នក​ប្រើប្រាស់​គេហទំព័រ​​ នៅ​កន្លែង​ផ្សេង​ៗ​។

នៅ​លើ​បន្ទាត់​លេខ 16 ការសរសេរ​ថា User.register(); គឺជាការ​ចុះ​បញ្ជី​ជាមួយ​នឹងកម្មវិធី keystone ដើម្បី​កំណត់​ថា​ជា​គំរូ​ទិន្នន័យ​ដាច់​ដោយ​ឡែកមួយ​ ​សំរាប់​​បណ្តា​​អ្នក​ប្រើប្រាស់​កម្មវិធី​​គេហទំព័រ​នេះ​។

ក្រោយ​ពី​មាន​គំរូ​ទិន្នន័យ​នៃប្រើប្រាស់គេហទំព័រ​រួច​ហើយ យើងចាំបាច់ត្រូវ​បង្កើតអ្នក​ប្រើប្រាស់​គេហទំព័រ​ជាក់ស្តែង​​ណា​ម្នាក់​ជា​មុនសិន ដោយ​ធ្វើដូច​ខាងក្រោមនេះ​៖
exports.create = {
  User: [
    {
      displayName: 'sokhavuth',
      email: 'vuthdevelop@gmail.com',
      password: 'admin',
    },
  ],
};
តាមគោលការណ៍​សាស្ត្រា keystone យើង​ចាំបាច់​ត្រូវ​ដាក់​ឈ្មោះ​អោយ​​ឯកសារនេះ​អោយ​​មាន​ទំរង់​ជា 0.0.1-first-user.js និង​រក្សាវា​ទុក​នៅ​ក្នុង​ថត​មួយ​មានឈ្មោះ​ថា updates ។
|--keystone
  |--node_modules/
  |--models
     |--User.js
  |--updates
     |--0.0.1-first-user.js 
  |--package.json
  |--keystone.js
បន្ទាប់​មក យើង​ចាំបាច់​ត្រូវ​បន្ថែម​ទិន្នន័យ​មួយ​ចំនួន​ទៀត​ចូល​ទៅ​ក្នុង​ក្បួន​ឈ្មោះ keystone.init() នៅ​ក្នង​ឯកសារ​នៃ​កម្មវិធី​មេ keystone.js ដោយ​ធ្វើ​ដូច​ខាងក្រោម​នេះ៖
var keystone = require('keystone');

keystone.init({
  'cookie secret': 'secure string goes here',
  'name': 'mykeystone',
  'user model': 'User',
  'auto update': true,
  'auth': true,
});

keystone.import('models');

keystone.start();
លុះមានអ្វីៗ​គ្រប់សព្វទាំងអស់់ហើយ យើង​អាច​ដំណើរការ​កម្មវិធី​ keystone របស់​យើង​បាន​ដោយ​សរសេរ​នៅ​លើ​បង្អួច​ខ្មៅ​ថា node keystone.js ។



នៅ​ពេល​ដែលកម្មវិធី​ខាងលើនេះ​ដំណើរការ បើយើងបើក browser ចូលទៅ​កាន់​អាស័យដ្ឋាន http://localhost:3000/keystone យើង​នឹង​ឃើញ​ទំព័រ​សំរាប់​អ្នក​ប្រើប្រាស់​គេហទំព័រ​ដូច​ខាង​ក្រោម​នេះ៖