下线用户——删除Token
前置内容
- 【Nodejs express 连接Mysql】: https://www.hyz.cool/articles/207
- 【Nodejs express 连接 Redis】: https://www.hyz.cool/articles/208
- 【统一后端返回数据格式——云剪切板】: https://www.hyz.cool/articles/209
路由
const express = require("express")
const TokenController = express.Router();
const TokenService = require("../services/TokenService")
TokenController.delete("/remove",TokenService.remove)
module.exports = TokenController
js
数据库访问
import {Query} from "../services/MysqlService";
export const removeByUserId = (userId) => {
return Query("DELETE FROM `tb_token` WHERE `user_id` = ?", [userId])
}
js
服务实现
import Result from "../utils/Result";
const TokenDao = require("../daos/TokenDao")
const validator = require("express-validator");
export const remove = [
validator.query("userId", "用户id不能为空").isLength({min: 1}),
(req, res, next) => {
let validationResult = validator.validationResult(req)
if (!validationResult.isEmpty()) return Result.result(res, Result.invalidParams(validationResult.array()));
let {userId} = req.query
getLoginUser(req).then(userDTO => {
if (!userDTO) return Result.result(res, Result.notLogin())
if ((userDTO.id + "") !== (userId + "")) return Result.result(res, Result.noAuth())
TokenDao.removeByUserId(userId).then(result => {
return Result.result(res, Result.success("删除成功"))
}).catch(err => {
return Result.result(res, Result.failed("删除失败"))
})
}).catch(err => {
return Result.result(res, Result.failed("获取登陆用户失败"))
})
}];
js