在服务端,先设计一个 注册用户 用的接口,让用户可以通过客户端申请注册新的帐户。申请注册帐户的时候只需要提供用户的名字还有密码,因为暂时在应用的数据仓库里,存储用户数据用的数据表格里面,除了 id 以外,现在只有 name 与 password 这两个栏目。以后你可以自己重新设计这张数据表格,添加新的栏目。
注册用户 的接口收到了请求以后,需要做一些检查,比如看看是不是提供了需要的 name 与 password。还得再检查一下要注册的用户名是不是已经存在了。根据检查的结果做出不同的响应,这样用户在客户端那里就知道到底发生了什么,下一步要做什么等等。
打开 src/user 下面的 user.service,在这个服务里可以定义一个服务方法,它可以把用户数据存储到数据仓库里。 导出一个函数,名字叫 createUser,用 async 标记一下这个函数,函数有个 user 参数,类型是 UserModel,用箭头函数的写法定义这个函数。
在函数里面准备一条查询,定义一个 statement,用一个字符模板,里面组织一段 SQL,在数据表里插入新的数据记录可以使用 INSERT INTO,数据表是 user 。 在 SET 后面设置具体的数据。这里先用 ? 号代替。
下面要执行准备好的 SQL , const 方括号 data, 用 await ,等待执行的结果,执行一下 connection,先用一下 promise() 接着调用 query() ,把要执行的 SQL 交给这个方法,再提供一下 SQL 里的 ? 号表示的值,这里就是 user。
函数最后要提供数据, return 的是 data。
再打开 user.controller ,在这里可以定义创建用户接口需要的处理器。导出一个函数,名字叫 store,把它标记成一个异步函数,用箭头函数的写法。 函数需要几个函数,request,类型是 Request,response 类型是 Response,还有 next ,类型是 NextFunction。
在函数的主体里面,先准备好需要的数据,从请求主体里,把 name 还有 password 提取出来,来自 request.body 。
下面要创建用户,可以先准备好一组 try catch ,把要做的事情放在 try 里面,添加一个 data,然后 await 等待执行 userService 上的 createUser 方法,提供一个对象参数,里面需要 name 还有 password。
然后做出响应,response.status 状态码设置成 201,再用 send 发送响应的数据,可以是 data。
出现异常在 catch 里处理,执行 next() 带着 error,这样异常会交给默认的异常处理器处理。
最后再去定义 创建用户接口,打开 user.router,在里面定义一个 创建用户 接口,用一下 router.post 方法定义这个接口,地址是 /users,接口处理器设置成 userController 里的 store