npm init
npm i koa koa-router
npm i --save-dev typescript ts-node nodemon
npm i --save-dev @types/koa @types/koa-router
在项目根目录,新建tsconfig.json,并加入内容。
要使你的服务“跑”起来,在刚建立的src文件夹上新建server.ts,作为此应用的入口,在此文件中加入内容。
koa是一个非常简洁的框架,它并没有提供路由。在此项目,我们使用koa-router。
koa-router的使用其实不太复杂。
npm run watch-server 命令
1) 安装相应插件
npm install sequelize -s
npm install mysql2 -s
2)编写数据库连接设置(models/index.ts)
import { Sequelize } from 'sequelize';const DbSequelize = new Sequelize({host: "localhost",//本地:localhost,其他服务器使用ip地址dialect: "mysql",//连接数据库类型database: "demo_koa_ts",//数据库名称username: "root",//数据库账户用户名password: "syy2307",//数据库账户密码define: {timestamps: false,//是否开启时间戳createAt deleteAt updateAtunderscored: true,//下划线freezeTableName: true, //禁止sequelize修改表名,默认会在表后边添加一个字母`s`表示复数paranoid: true //开启假删除},pool: {max: 10,min: 0,acquire: 30000, //请求超时时间idle: 10000 //断开连接后,连接实例在连接池保持的时间},timezone: '+08:00',//时区设置,东八区 默认是'+00:00'
});export default DbSequelize;
3)编写相应的models、service、controller文件夹和内容。
4)入口文件引入数据库连接文件(models/index.ts)
5)创建router文件夹,存放接口地址,及其对应的controller。
6)入口文件相关的路由设置,改为引入路由文件。
7)安装koa-body
npm install koa-body -s
8)入口文件添加koa-body的使用。
app.use(KoaBody({multipart: true
}));
9)完成,使用postman测试接口。
此包提供了TypeScript的运行环境,即不需要编译也能运行TypeScript代码。
在开发期间省去编译这一步。
Nodemon会监视node应用中的代码,当它发现改变,会自动重启服务。
这对于开发来说,省了重启服务这一步。
nodemon --watch ‘src/’ -e ts,tsx --exec ts-node src/server.ts
并没有在我修改src文件夹下文件时重新加载,这是为什么?
是一个可以帮助解析 http 中 body 的部分的中间件,包括 json、表单、文本、文件等
ORM工具,可以映射表,能使sql变得更简单。
KoaBody({multipart: true, 支持文件格式formidable: {maxFileSize: 1000 * 1024 * 1024 // 设置上传文件大小最大限制,默认2M},formLimit: "10mb",jsonLimit: "10mb",textLimit: "10mb"
})
1. 要仅选择某些属性,可以使用该attributes选项。
Model.findAll({attributes: ['foo', 'bar']
});
//等同于 SELECT foo, bar ...
2.可以使用嵌套数组重命名属性:
Model.findAll({attributes: ['foo', ['bar', 'baz']]
});
//等同于SELECT foo, bar AS baz..
3.sequelize.fn用来进行聚合
Model.findAll({attributes: [[sequelize.fn('COUNT', l('hats')), 'no_hats']]
});
//等同于SELECT COUNT(hats) AS no_hats ...
4.删除选定的几个属性
Model.findAll({attributes: { exclude: ['baz'] }
});
Sequelize的where配置项基本上完全支持了SQL的where子句的功能
1. 条件
Model.findAll({'where': {'id': [1, 2, 3],'nick': 'a','department': null}
});
2.可包含操作符($and$or...)---新版本修改了
User.findAll({'where': {'id': {'$eq': 1, // id = 1'$ne': 2, // id != 2'$gt': 6, // id > 6'$gte': 6, // id >= 6'$lt': 10, // id < 10'$lte': 10, // id <= 10'$between': [6, 10], // id BETWEEN 6 AND 10'$notBetween': [11, 15], // id NOT BETWEEN 11 AND 15'$in': [1, 2], // id IN (1, 2)'$notIn': [3, 4] // id NOT IN (3, 4)},'nick': {'$like': '%a%', // nick LIKE '%a%''$notLike': '%a' // nick NOT LIKE '%a'},'updated_at': {'$eq': null, // updated_at IS NULL'$ne': null // created_at IS NOT NULL}}})
User.findAll({'where': {'$or': [{'id': [1, 2]},{'nick': null}]}
});
where: {[Op.or]: {name: {[Op.like]: `%${userSubject}%`},nameEn: {[Op.like]: `%${userSubject}%`}}}
"compilerOptions": { // 配置编译选项"target": "es2017",// 多用es6"module": "commonjs","noImplicitAny": true, //当表达式和申明 类型为any时,是否需要发出警告,设置false,则不警告"outDir": "dist","sourceMap": true,//为发出的JavaScript文件创建源映射文件。 性能节省,可能加载更快"moduleResolution":"node",//指定TypeScript如何从给定模块说明符中查找文件。指定当前项目的运行模式,默认浏览器模式。"baseUrl":".", //根目录"types": [ // 引用第三方库类型,可直接使用。"@types/node"],"typeRoots": [ // 自定义类型"./types"],},"include": [ // 指定编译文件位置"src/**/*"],"exclude": ["node_modules","**/*.spec.ts"]
}
.html 官方地址
本文发布于:2024-01-29 08:31:06,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170648826814004.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |