保存资源

前置内容

  1. 【Nodejs express 连接Mysql】: https://www.hyz.cool/articles/207
  2. 【Nodejs express 连接 Redis】: https://www.hyz.cool/articles/208
  3. 【统一后端返回数据格式——云剪切板】: https://www.hyz.cool/articles/209

路由

  • ResourceController.js
const express = require("express");
const ResourceController = express.Router();

const ResourceService = require("../services/ResourceService")

/**
 * 保存资源
 */
ResourceController.post("/save", ResourceService.saveResource)

module.exports = ResourceController;

js

数据库访问

  • ResourceDao.js
import {Query} from "../services/MysqlService";

/**
 * 保存资源
 * @param resource
 * @param url
 * @param method
 * @param auth
 * @param frequent
 * @returns {Promise<unknown>}
 */
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

服务实现

  • ResourceService.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
打赏
  • 微信
  • 支付宝
评论
来发评论吧~
···

歌手: