【lin-cms】后端学习 (编辑,删除)添加权限控制和日志管理

新增一个编辑内容接口

  1. 在api目录下test.js 新增 put 方法
		//编辑内容需要一个对应的id ,type
	ContentApi.put('/:id',async (ctx)=>{
			//调用校验层
			 const v = await new EditContentValidator().validate(ctx);
			//调用服务层
			 const id = v.get('path.id');
             const parma = v.get('body');
             await contentService.editcontent(id, parma);	
			//	返回成功信息
			ctx.success({
				message:'编辑信息成功'
			})

     })

2.新增一个校验器

// 编辑  继承了新增时的校验类
class EditContentValidator extends ContentValidator {
  constructor () {
    super();
    this.id = new Rule('isNotEmpty', 'id不能为空');
  }
}
  1. 新增dao层
	//修改数据时先验证 数据是否存在
	// 编辑数据
  static async editcontent (v, params) {
    // 先验证一下数据
    const movie = await MovieModel.findByPk(v);  //返回的movie 模型
    if (!movie) {
      // 不存在该数据
      throw new NotFound({ message: '无对应数据' });
    }
    await movie.update(params);    
  }
  1. 服务层调用
  // 编辑数据方法
  static async editcontent (id, params) {
    // 判断 他的type 是否又被修改呢了
    switch (params['type']) {
      case 100:
        MusicDao.editcontent(id, params);
        break;
      case 200:
        delete params['url'];
        MovieDao.editcontent(id, params);
        break;
      case 300:
        delete params['url'];
        SentenceDao.editcontent(id, params);
        break;

      default:
        throw new NotFound({ message: '对应类型没有找到' });
    }
  }

新增删除接口

  1. 在api目录下test.js 新增 del 方法
// 删除期刊数据   (传指定ID  和对应的type)
ContentApi.delete('/:id', async ctx => {
           const v = await new DelteContentValidator().validate(ctx);
           const id = v.get('path.id');
           const type = parseInt(v.get('query.type'));
             await contentService.delcontent(id, type);
             ctx.success({
                 message: '删除期刊数据成功'
               });
            });
  1. 添加校验器
// 删除        继承lin的验证器
class DelteContentValidator extends LinValidator {
  constructor () {
    super();
    this.id = new Rule('isNotEmpty', 'iD不能为空');
    this.type = new Rule('isNotEmpty', '类型不能为空');
  }
}

3.添加dao层

	// 删除数据    、接收对应的ID
  static async delcontent (id) {
    await MovieModel.destroy({ where: { id: id } });
  }

4.服务层调用

  // 删除数据    、、根据type 类型调用不同的dao层
  static async delcontent (id, type) {
    switch (type) {
      case 100:
        await MusicDao.delcontent(id);
        break;
      case 200:
        await MovieDao.delcontent(id);
        break;
      case 300:
        await SentenceDao.delcontent(id);
        break;

      default:
        throw new NotFound({ message: '类型没有找到' });
    }
  }

现在尝试调用一下接口吧!

3.接口添加权限管理

import { logger } from '../../middleware/logger';
import { adminRequired } from '../../middleware/jwt';

将post,get方法  替换成  lin提供的方法即可
		 post   ----->   linPost
		 del    ----->   linDel
		 get    ----->   linGet
		 put    ----->   linPut

在红图下面配置 api 所属模块 
    const 	contentApi  =new  LinRouter({
			prefix: '/v1/content',
			moudle:'内容管理'   //也可以在对应的方法中指定所属模块
	})
//example :

	contentApi.linPost(
	'addcontent'//唯一标识
	'/'    ,    //url路径
	contentApi.permission('添加期刊内容',true),  // 名称   ,第二个参数:是否挂载 ,默认true
	loginRequired        //   权限等级  (login  ,group ,admin)在middleware/jwt 中引入
	logger('{user.username}新增了数据')    //启用行为日志 {} 里面是变量  user模型   在中间件中引入logger
	//也可以第二种写法
	{
		permission:'添加期刊内容', 
		moudle:  '模块',   
		mount:true
	}
		ctx=>{
				ctx.json('返回消息')
		}
	)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套内容管理系统框架。 Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率。 Lin CMS 特点: Lin CMS 的构筑思想是有其自身特点的。下面我们阐述一些 Lin 的主要特点。 1、Lin CMS 是一个前后端分离的 CMS 解决方案 这意味着,Lin 既提供后台的支撑,也有一套对应的前端系统,当然双端分离的好处不仅仅在于此,我们会在后续提供NodeJS和PHP版本的 Lin。如果你心仪 Lin,却又因为技术栈的原因无法即可使用,没关系,我们会在后续提供更多的语言版本。为什么 Lin 要选择前后端分离的单页面架构呢? 首先,传统的网站开发更多的是采用服务端渲染的方式,需用使用一种模板语言在服务端完成页面渲染:比如 JinJa2、Jade 等。 服务端渲染的好处在于可以比较好的支持 SEO,但作为内部使用的 CMS 管理系统,SEO 并不重要。 但一个不可忽视的事实是,服务器渲染的页面到底是由前端开发者来完成,还是由服务器开发者来完成?其实都不太合适。现在已经没有多少前端开发者是了解这些服务端模板语言的,而服务器开发者本身是不太擅长开发页面的。那还是分开吧,前端用最熟悉的 Vue 写 JS 和 CSS,而服务器只关注自己的 API 即可。 其次,单页面应用程序的体验本身就要好于传统网站。 2、框架本身已内置了 CMS 常用的功能 Lin 已经内置了 CMS 中最为常见的需求:用户管理权限管理日志系统等。开发者只需要集中精力开发自己的 CMS 业务即可。 3、Lin CMS 本身也是一套开发规范 Lin CMS 除了内置常见的功能外,还提供了一套开发规范与工具类。换句话说,开发者无需再纠结如何验证参数?如何操作数据库?如何做全局的异常处理?API 的结构如何?前端结构应该如何组织?这些问题 Lin CMS 已经给出了解决方案。当然,如果你不喜欢 Lin 给出的架构,那么自己去实现自己的 CMS 架构也是可以的。但通常情况下,你确实无需再做出架构上的改动,Lin 可以满足绝大多数中小型的 CMS 需求。 举例来说,每个 API 都需要校验客户端传递的参数。但校验的方法有很多种,不同的开发者会有不同的构筑方案。但 Lin 提供了一套验证机制,开发者无需再纠结如何校验参数,只需模仿 Lin 的校验方案去写自己的业务即可。 还是基于这样的一个原则:Lin CMS 只需要开发者关注自己的业务开发,它已经内置了很多机制帮助开发者快速开发自己的业务。 注意:该软件为前端框架,如需后端框架,请到官网中进行相应的下载。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值