typescript-koa-postgresql 实现一个简单的rest风格服务器 —— 连接 postgresql 数据库...
接上一篇,这里使用 sequelize 来连接 postgresql 数据库
1、安装 sequelize,数据库驱动 pg
yarn add sequelize sequelize-typescript pg reflect-metadata
2、新建配置文件夹 conf 及 配置文件 db.conf.ts
/*** @name: 数据库配置* @param : undefined* @return : undefined*/ export const dbConfig = {host: 'localhost',database: 'demo',dialect: 'postgres',username: 'postgres',password: '123456' }
3、连接数据库,新建文件夹 db 及 配置文件 db.ts
1 /* 2 * @Description: 数据库连接类 3 */ 4 5 import * as path from 'path' 6 import { Sequelize } from 'sequelize-typescript' 7 import { dbConfig } from '../conf/db.conf' 8 9 class DbContext { 10 private sequelize: Sequelize 11 constructor() { 12 const { host, database, dialect, username, password } = dbConfig 13 this.sequelize = new Sequelize({ 14 host: host, 15 database: database, 16 dialect: dialect, 17 username: username, 18 password: password, 19 define: { 20 timestamps: true, //开启时间戳 create_at delete_at update_at 21 paranoid: true, //开启假删除 22 underscored: true, //下划线 23 charset: 'utf8', 24 freezeTableName: true //固定表名为单数 默认表名是xxxs 25 }, 26 pool: { 27 max: 10, 28 min: 0, 29 acquire: 30000, 30 idle: 10000 31 }, 32 timezone: '+08:00', 33 modelPaths: [path.resolve(__dirname, `./models`)] 34 }) 35 this.sequelize.sync() 36 } 37 init(): Boolean { 38 return !!this.sequelize 39 } 40 getInstance(): Sequelize { 41 return this.sequelize 42 } 43 isInit(): Boolean { 44 return !!this.sequelize 45 } 46 } 47 export const dbContext = new DbContext()
4、数据库实体类,新建文件夹 models 及文件 user.ts
1 /* 2 * @Description: 数据库实体类 3 */ 4 5 import { Table, Column, Model } from 'sequelize-typescript' 6 7 @Table({ 8 tableName: 'user' 9 }) 10 export default class User extends Model<User> { 11 @Column({ 12 comment: '自增ID', 13 primaryKey: true, 14 autoIncrement: true, 15 }) 16 id: number 17 18 @Column 19 username: string 20 21 @Column 22 password: string 23 }
5、编写业务逻辑接口,在 src 目录下新建文件夹 dao、service,在 dao 目录下新建 UserDao.ts 及子目录 impl,在 service 目录下新建 UserService.ts 及子目录 impl
1 /* 2 * @Description: 数据库表操作基础接口 UserDao.ts 3 */ 4 export interface UserDao { 5 /** 6 * @name: 查询 7 * @param : 8 * @return : Array<User> 9 */ 10 findAll(); 11 /** 12 * @name: 查询 13 * @param : 14 * @return : Array<User> 15 */ 16 findByName(username:string); 17 /** 18 * @name: 新增 19 * @param : undefined 20 * @return : undefined 21 */ 22 create(entity:UserInfo); 23 24 /** 25 * @name: 删除 26 * @param : undefined 27 * @return : undefined 28 */ 29 delete(id:number); 30 } 31 export interface UserInfo { 32 username:string; 33 password:string; 34 }
1 /* 2 * @Description: service接口 UserService.ts 3 * @version: 4 */ 5 6 export interface UserService{ 7 /** 8 * @name: 查询 9 * @param : undefined 10 * @return : undefined 11 */ 12 findAll(); 13 14 /** 15 * @name: 查询 16 * @param : undefined 17 * @return : undefined 18 */ 19 findByName(username:string); 20 21 /** 22 * @name: 新增 23 * @param : undefined 24 * @return : undefined 25 */ 26 create(username:string,password:string); 27 28 /** 29 * @name: 删除 30 * @param : undefined 31 * @return : undefined 32 */ 33 delete(id:String); 34 }
6、编写业务逻辑实现类 UserDaoImpl.ts、UserServiceImpl.ts
1 /* 2 * @Description: 数据库表操作基础实现类 UserDaoImpl.ts 3 */ 4 5 import { dbContext } from '../../db/db' 6 import { UserDao, UserInfo } from '../UserDao'; 7 import User from '../../db/models/user'; 8 9 export class UserDaoImpl implements UserDao{ 10 constructor(){ 11 dbContext.init(); 12 } 13 /** 14 * @name: 查询 15 * @param : undefined 16 * @return : undefined 17 */ 18 public async findAll(){ 19 const results = await User.findAll({ 20 raw: true 21 }) 22 return results; 23 } 24 25 /** 26 * @name: 查询 27 * @param : undefined 28 * @return : undefined 29 */ 30 public async findByName(username:string){ 31 const results = await User.findOne({ 32 where:{ 33 username:username 34 } 35 }) 36 return results; 37 } 38 39 /** 40 * @name: 新增 41 * @param : entity 42 * @return : undefined 43 */ 44 public async create(entity:UserInfo) { 45 const results = await User.create(entity) 46 return results; 47 } 48 49 /** 50 * @name: 删除 51 * @param : undefined 52 * @return : undefined 53 */ 54 public async delete(id: number) { 55 const results = await User.destroy({ 56 where:{ 57 id:{ 58 $eq:id 59 } 60 } 61 }); 62 return results; 63 } 64 }
1 import { UserService } from "../UserService"; 2 import { UserDao } from "../../dao/UserDao"; 3 import { UserDaoImpl } from "../../dao/impl/UserDaoImpl"; 4 5 /* 6 * @Description: service实现类 UserServiceImpl.ts 7 */ 8 9 10 export class UserServiceImpl implements UserService{ 11 private userDao:UserDao; 12 13 constructor(){ 14 this.userDao = new UserDaoImpl(); 15 } 16 17 /** 18 * @name: 查询 19 * @param : undefined 20 * @return : undefined 21 */ 22 public findAll() { 23 return this.userDao.findAll(); 24 } 25 /** 26 * @name: 查询 27 * @param : undefined 28 * @return : undefined 29 */ 30 public findByName(username:string) { 31 return this.userDao.findByName(username); 32 } 33 /** 34 * @name: 新增 35 * @param : entity 36 * @return : undefined 37 */ 38 public create(username: string, password: string) { 39 return this.userDao.create({username,password}); 40 } 41 42 /** 43 * @name: 删除 44 * @param : undefined 45 * @return : undefined 46 */ 47 public delete(id: String) { 48 return this.userDao.delete(~~id); 49 } 50 51 }
7、查看成果,修改 router/index.ts
1 /* 2 * @Description: 后台路由组件 3 * @version: 0.1.0 4 */ 5 import * as Router from 'koa-router'; 6 import { UserInfo } from '../dao/UserDao'; 7 import { UserService } from '../service/UserService'; 8 import { UserServiceImpl } from '../service/impl/UserServiceImpl'; 9 10 const router = new Router(); 11 const userService:UserService =new UserServiceImpl(); 12 13 router.get('/*', async (ctx) => { 14 ctx.body = await userService.findAll(); 15 }) 16 17 export { router }
8、浏览器输入 http://localhost:8080
至此连接数据库完成
目录结构:
转载于:https://www.cnblogs.com/lifefriend/p/10025469.html
typescript-koa-postgresql 实现一个简单的rest风格服务器 —— 连接 postgresql 数据库...相关推荐
- java写一个窗体并连接MySQL_大神帮忙写一个简单地java页面,连接MySQL数据库之后能够显示数据库上的数据...
展开全部 用jdbc 连接mysql数据库就行了,网上搜下一大把. --记得在classpath下加入mysql 的jdbc驱动包. /** * @author :来e68a84e8a2ad32313 ...
- 一个简单的Java web服务器实现
前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...
- 一个简单的python日志服务器
一个简单的python日志服务器,主要目的是搜集各python logging记录的日志,将其简单汇总.源码如下: # -*- coding: utf-8 -*- ''' Created on 201 ...
- 《UNP》随笔——“实现一个简单的回射服务器”存在的不足(信号处理)
尽管实现了一个简单的回射服务器,但依旧存在一些不足: 服务端的子进程结束的时候,由于父进程未对子进程发送的SIGCHLD信号进行处理,会导致子进程进入僵死状态.这一点该如何解决? 客户端A向服务端B发 ...
- 自己动手搭建一个简单的静态资源服务器
文章目录 自己动手搭建一个简单的静态资源服务器 介绍 一.设计到的模块 备注: 二.代码结构 三.具体代码 自己动手搭建一个简单的静态资源服务器 介绍 通过此文章的学习,可以自己使用NodeJs搭 ...
- java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署
java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 本源码技 ...
- 【译】使用python创建一个简单的restful风格的webservice应用
2019独角兽企业重金招聘Python工程师标准>>> 这是一个如何使用python快速构建简单restful风格webservice的应用教程. 1.分析rest路由规则 rest ...
- Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播)
文章目录 Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播) 一.基础环境搭建 二.构建Nginx 下载nginx-rtmp-module 安装Nginx 编译nginx,代理 ...
- 一个简单的静态web服务器
用python的socket写的一个简单多进程服务器 #-*-coding:utf-8-*- import re from socket import * from multiprocessing i ...
最新文章
- 用python画烟花-用python做一个烟花show
- c语言程序设计的反思,C语言程序设计教学反思.doc
- 3.cocos2dx它Menu,由menu为了实现场景切换
- oracle apex触发器,triggers - 插入之前/更新Apex触发器之前,测试覆盖率失败 - 堆栈内存溢出...
- 学计算机的思维导图,电脑上最好用的6款,思维导图软件测评
- 记kali下使用metasploit木马进行远程控制
- 项目管理-产品开发流程
- python学习之心路历程
- 记一次从 git pull 出现 Untracked FilesPervent Merge
- angular RxJs
- ISO14229 理解(一)
- 深度模型框架(持续更新)
- 吕爱国倾心讲座:混合方法研究的类型与程序设计
- 怎么在视频画面添加图片的方法
- 常吃几种蔬菜帮你年轻10岁
- 生产制造业ERP系统模块
- c语言两千行以内代码,C语言的教务管理系统(2000行代码)(106页)-原创力文档
- 第十届河南 ACM 省赛纪事
- D3D中2D图片的绘制两种方法
- 鉴释×中科院计算所丨OS2ATC 2020精彩回顾
热门文章
- JavaWeb开发概念了解
- nosql简答什么是最终一致性_最终一致性 – 如何在NoSQL中维护非规范化一致性?...
- matlab产生一组均为一的矩阵,在matlab中如何从一组数中得到随机数组成一个n*n的矩阵...
- 异星工厂 自动机器人_刚刚,ABB机器人全球最大机器人超级工厂在康桥动工! 投资10亿元,用机器人造机器人...
- Leetcode 1. 两数之和 (Python版)
- Opencv实战(一) 视频人数统计(C++ Opencv)前后背景分离方法
- 关于printf输出 格式化规定符 的
- 【实例分割】cvpr2021_Look Closer to Segment Better
- 余额宝好日子到头,以后不能随存随取了!
- “城迷”:黑白梦与精神逃离