目标
评论拥有的字段
_id: objectid
url: 主题 必填
content: 评论内容 必填
email: 用户邮箱 必填
create: 创建时间
目标功能
- 添加
- 通过主题查询主题相关的所有评论
- 测试页面
用JS实现一次
// 先用js实现一次// 首页router.get('/', async (ctx) => {ctx.body = {code: 0,msg: 'success'}})// 新增接口router.post('/add', async (ctx) => {// 接受参数/*** url: 主题 必填* content: 评论内容 必填* email: 用户邮箱 必填*/const body = ctx.request.bodyif (!body.url) {ctx.body = {code: 1,msg: '参数错误'}}if (!body.content) {ctx.body = {code: 1,msg: '参数错误'}}if (!body.email) {ctx.body = {code: 1,msg: '参数错误'}}// 补充创建时间body.create = new Date()let postRepository = connection.getRepository(Post)let post = postRepository.create(body)let result = await postRepository.save(post)ctx.body = {code: 0,msg: 'success',data: result}})// 获取列表router.get('/list', async (ctx) => {const postRepository = connection.getRepository(Post)const posts = await postRepository.find()ctx.body = {code: 0,msg: 'success',data: posts}})
观察一下,改造成TS我们应该怎么做
- 很明显的是我们返回的数据格式是固定的(code, msg, data),只有data的类型是不固定的,所以就可以用一个 interface来约束一下
- add的时候,接受得参数是什么貌似也没有约束,最起码看不到,过几天就会忘记了
- 如果路由得一个个写,10个以内得接口还可以接受,再多就要疯了
