前面几节我们链接了数据库,进行了路由鉴权,接下来我们实现关于用户相关的操作, 需要获取用户基本信息, 并且编辑更新这些信息
获取用户基本信息
router
首先我们还是在router 中新加一条路有
router.get('/user/getinfo', jwterror, controller.user.getUserInfo);
controller
然后在controller的user中定义定义基本的业务操作
async getUserInfo() {
const { ctx, app } = this;
const { header: { token } } = ctx;
const userinfo = app.jwt.verify(token, app.config.jwt.secret);
const result = await ctx.service.user.getUserById(userinfo.id);
console.log(result);
const { username, ctime, nickname } = result;
ctx.body = {
code: 200,
msg: '成功',
data: {
username,
ctime,
nickname,
},
};
}
我们解析token 来获取到用户的id, 然后通过id去user表查询用户的基本信息, 所以接下来我们需要在service中去定义一个getUserById方法来实现通过id 查询用户数据
service
async getUserById(id) {
const { app } = this;
const result = await app.mysql.get('user', { id });
return result;
}
修改用户信息
修改数据的思路与上面一样, 不同的只是上面是在数据库user表中读取数据, 修改需要的是更新数据
router
router.post('/user/updateinfo', jwterror, controller.user.updateUserInfo);
controller
async updateUserInfo() {
const { ctx, app } = this;
const { header: { token } } = ctx;
const userinfo = app.jwt.verify(token, app.config.jwt.secret);
const result = await ctx.service.user.updateUserInfo(userinfo.id, ctx.query);
ctx.body = { result };
}
位了方便, 上面直接是更新的所有提交的数据updateUserInfo(userinfo.id, ctx.query), 我们主要看一下下面service中的updateUserInfo方法
service
async updateUserInfo(id, params) {
const { app } = this;
const result = await app.mysql.update('user', params, {
where: { id },
});
const state =
result.affectedRows === 1 ? 'sucess' : 'fail';
return state;
}
我们通过result.affectedRows来判断更新是否成功
基础的路由功能实现差不多都是这个逻辑, 后面更多的api其实都可以参考这三步实现