Deno MySQl ORM

視頻演示

https://www.bilibili.com/video/BV1BT4y1E7Nh/?p=14

一起來完成以下步驟:

  1. 創建數據庫連接

  2. 創建Model,也就是實體類

  3. 寫新增、修改、查詢和刪除

  4. 運行:deno run --allow-net --allow-read --allow-write main.ts

#controllers/employeeController.ts

//引入Context
import { Context } from "https://deno.land/x/oak/mod.ts";
//引入倉庫類
import employeeRepo from "../repositories/employeeRepo.ts";

//獲取當前目錄方法 const { cwd } = Deno;  class Controller {  static async hello(ctx: any) {  //cwd獲取當前工程目錄   //注意 ' !== `  ctx.render(`${cwd()}/views/index.ejs`, {  title: "Testing",  data: { name: "www.deepincoding.com" }  });  }   //保存  static async save(ctx: Context) {  const {value} = await ctx.request.body();  const result = await employeeRepo.save(value);  ctx.response.body = result;  }   //獲取所有  static async findAll(ctx: Context){  const result = await employeeRepo.findAll();  ctx.response.body = result;  }   //更新  static async update(ctx: Context) {  const {value} = await ctx.request.body();  const result = await employeeRepo.update(value);  ctx.response.body = result;   }   //根據ID獲取  static async findById(ctx: any){  const id = ctx.params.id;  const result = await employeeRepo.findById(id);  ctx.response.body = result;   }   //根據ID刪除  static async deleteById(ctx: any){  const id = ctx.params.id;  const result = await employeeRepo.deleteById(id);  ctx.response.body = result;   }  }  export default Controller;  

#database/database.ts

import { DataTypes, Database, Model } from 'https://deno.land/x/denodb/mod.ts';

//MySQL連接
const mysqldb = new Database('mysql', {
  host: '127.0.0.1',
 username: 'root',  password: '123456',  database: 'deno' });  //導出 export default mysqldb; 

#models/employeeModel.ts

import { DataTypes, Database, Model } from 'https://deno.land/x/denodb/mod.ts';


//員工實體
class EmployeeModel extends Model {
 //表名  static table = 'employee';  //字段  static fields = {  id: { primaryKey: true, autoIncrement: true },  name: DataTypes.STRING,  age: DataTypes.INTEGER  };  }  export default EmployeeModel;  

#repositories/employeeRepo.ts


//引入EmployeeModel實體
import  EmployeeModel  from  "../models/employeeModel.ts";
import mysqldb from "../database/database.ts";

 class employeeRepo{   //初始化數據庫  static async init(){  mysqldb.link([EmployeeModel]);  await mysqldb.sync({ drop: false });  }   //新增  static async save (employee: any){  return EmployeeModel.create(employee);  }   //獲取所有  static async findAll(){  return EmployeeModel.all();  }   //更新  static async update (employee: any){  return EmployeeModel.where("id",employee.id).update(employee);  }   //根據ID查詢  static async findById(id: number){  return EmployeeModel.where("id",id).get();  }   //刪除  static async deleteById(id: number){  return EmployeeModel.deleteById(id);  }  }  export default employeeRepo;  

#routers/employeeRouter.ts

//引入Router
import { Router } from "https://deno.land/x/oak/mod.ts";
//引入自定義Controller
import Controller from "../controllers/employeeController.ts";

//創建router const router = new Router();  router.get("/",Controller.hello); router.post("/save",Controller.save); router.get("/findAll",Controller.findAll); router.put("/update",Controller.update); router.get("/findById/:id",Controller.findById); router.delete("/deleteById/:id",Controller.deleteById);  export default router;  

#main.ts

//引入所需的依賴模塊
import { Application } from "https://deno.land/x/oak/mod.ts"
import {viewEngine,engineFactory,adapterFactory} from "https://deno.land/x/view_engine/mod.ts";
import router from "./routers/employeeRouter.ts";
import employeeRepo from "./repositories/employeeRepo.ts";
 //初始化數據庫 await employeeRepo.init();  //創建相關頁面引擎對象 const ejsEngine = engineFactory.getEjsEngine(); const oakAdapter = adapterFactory.getOakAdapter();  //創建app const app = new Application(); //應用頁面引擎 app.use(viewEngine(oakAdapter,ejsEngine));  //應用路由 app.use(router.routes()); app.use(router.allowedMethods());  //log 日誌 console.log("Server Port 8000");  //端口 await app.listen({port: 8000 })   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章