保存资源
前置内容
- 【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 ResourceController = express.Router();
const ResourceService = require("../services/ResourceService")
ResourceController.post("/save", ResourceService.saveResource)
module.exports = ResourceController;
js
数据库访问
import {Query} from "../services/MysqlService";
export const saveResource=(resource,url,method,auth,frequent) =>{
return Query("INSERT INTO `tb_resource` (`resource`,`url`,`method`,`auth`,`frequent`,`create_time`,`update_time`) VALUES (?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE `resource` = ?,`method`=?,`auth` = ?,`frequent`= ?, `update_time`=?",
[resource,url,method,auth,frequent,new Date().toLocaleString(),new Date().toLocaleString(),resource,method,auth,frequent,new Date().toLocaleString()])
}
js
服务实现
const Result = require("../utils/Result")
const ResourceDao = require("../daos/ResourceDao")
const TokenService = require("../services/TokenService")
const validator = require("express-validator")
export const saveResource = [
validator.body("resource", "资源名称不能为空").isLength({min: 1}),
validator.body("url", "资源路径不能为空").isLength({min: 1}),
validator.body("method", "资源请求方法不能为空").isLength({min: 1}),
validator.body("auth", "资源权限格式不正确").isLength({min: 1})
.custom(auth => {
return [0, 1, 2].indexOf(auth) > -1
}),
validator.body("frequent", "资源检查频繁格式不正确").isLength({min: 1})
.custom(auth => {
return [0, 1].indexOf(auth) > -1
}),
(req, res, next) => {
let validationResult = validator.validationResult(req)
if (!validationResult.isEmpty()) return Result.result(res, Result.invalidParams(validationResult.array()));
let {resource, url, method, auth, frequent} = req.body
TokenService.getLoginUser(req).then(userDTO=>{
if(!userDTO) return Result.result(res,Result.notLogin())
if(userDTO.role<1) return Result.result(res,Result.noAuth())
ResourceDao.saveResource(resource, url, method, auth, frequent).then(result => {
return Result.result(res, Result.success("保存成功"))
}).catch(err => {
return Result.result(res, Result.failed("保存失败"))
})
}).catch(err=>{
console.log("check login error",err)
return Result.result(res,Result.notLogin())
})
}]
js