Typescript安装Koa
npm install koa koa-bodyparser koa-router koa-static --save # 添加koa 注意这里没有-dev
npm install @types/koa @types/koa-router @types/koa-bodyparser @types/koa-static --save-dev # 添加koa ts相关
删掉 operations.ts
和 index.ts
,新建项目入口文件 app.ts
,输入一下内容:
import path from 'path'
import Koa from 'koa'
import Router from 'koa-router'
import koaStatic from 'koa-static'
import bodyParser from 'koa-bodyparser'
const app = new Koa()
const router = new Router()
// Middlewares
app.use(bodyParser())
app.use(koaStatic(path.join(__dirname, '../public')))
// Routes
router.get('/api', async (ctx, next) => {
ctx.body = {
code: 0,
msg: 'success',
data: {
}
}
await next()
})
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => {
console.log('Koa started')
})
package.json
修改成 "dev": "nodemon --watch src/**/*.ts --exec \"ts-node\" src/app.ts"
npm run dev
之后 浏览器访问http://localhost:3000/api,即可看到内容。
在这里发现了一个很赞的点,终于不用写 const Koa = require('koa')
,已经跟Es6语法一致了!!!
OK http服务已经跑起来了。
安装mongodb
**
社区版(免费)下载地址:https://www.mongodb.com/try/download/community
具体安装步骤查看视频,或者自行网上搜索。
mongodb可视化管理工具:https://robomongo.org/
安装typeorm
npm install typeorm reflect-metadata mongodb --save # 安装typeorm、mongodb相关依赖
查看详细文档 https://typeorm.io/
一、测试链接是否生效,新建文件 src\entity\Post.ts
import { Column, Entity, ObjectID, ObjectIdColumn } from 'typeorm'
@Entity()
export default class Post {
@ObjectIdColumn()
id: ObjectID;
@Column()
title: string;
@Column()
text: string;
}
- Eslint提示:对修饰器的实验支持功能在将来的版本中可能更改。在 “tsconfig” 或 “jsconfig” 中设置 “experimentalDecorators” 选项以删除此警告。打开
tsconfig.json
将“experimentalDecorators”和“emitDecoratorMetadata”选项打开。 - Eslint提示:属性“id”没有初始化表达式,且未在构造函数中明确赋值。修改成如下代码
id!: ObjectID;
二、 app.ts
修改成如下代码
import path from 'path'
import Koa from 'koa'
import Router from 'koa-router'
import koaStatic from 'koa-static'
import bodyParser from 'koa-bodyparser'
import 'reflect-metadata'
import { createConnection, ConnectionOptions } from 'typeorm'
import Post from './entity/Post'
const options: ConnectionOptions = {
type: 'mongodb',
name: 'mymongodb',
host: 'localhost',
port: 27017,
username: '',
password: '',
database: 'comments',
synchronize: true,
entities: [
__dirname + '/entity/*.{ts, js}'
],
useUnifiedTopology: true,
logging: true
};
createConnection(options).then(async connection => {
let post = new Post()
post.title = '我的标题'
post.text = '我不想说'
let postRepository = connection.getRepository(Post)
postRepository
.save(post)
.then(post => console.log("Post has been saved: ", post))
.catch(error => console.log("Cannot save. Error: ", error))
const app = new Koa()
const router = new Router()
// Middlewares
app.use(bodyParser())
app.use(koaStatic(path.join(__dirname, '../public')))
// Routes
router.get('/api', async (ctx, next) => {
ctx.body = {
code: 0,
msg: 'success',
data: {
}
}
await next()
})
app.use(router.routes()).use(router.allowedMethods())
app.listen(3000, () => {
console.log('Koa started')
})
}).catch((error: any) => console.log('TypeORM connection error: ', error))
出现 Post has been saved: Post { title: '我的标题', text: '我不想说', id: 5fb0b527fb27b517e0d63c7b }
证明数据插入成功。
三、去数据库验证下
打开mongo.exe,依次输入
show dbs
use comments
show tables
db.post.find({}).pretty()
即可看到刚刚插入的数据。
到此基本的依赖都已经安装完成,下一步就是考虑怎么在业务逻辑中学习使用Typescript。
使用之前,建议去浏览一遍以下文档,不喜欢英文版,可以自行搜索中文版:
- KOA: https://koajs.com/
- TypeORM:https://typeorm.io/#/
- TypeScript:https://www.typescriptlang.org/zh/
- MongoDB 4.4 Manual:https://docs.mongodb.com/manual/
- ES6:https://es6.ruanyifeng.com/