uni-app 127收藏相关接口开发

Posted 2019ab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uni-app 127收藏相关接口开发相关的知识,希望对你有一定的参考价值。

创建迁移文件

npx sequelize migration:generate 

/database/migrations/***-fava.js

'use strict';

module.exports = 
  up: async (queryInterface, Sequelize) => 
    const  INTEGER, STRING, DATE, ENUM, TEXT  = Sequelize;
    // 创建表
    await queryInterface.createTable('fava', 
      id: 
        type: INTEGER(20).UNSIGNED,
        primaryKey: true,
        autoIncrement: true
      ,
      data: 
        type: TEXT,
        allowNull: false,
        defaultValue: '',
        comment: '内容',
      ,
      type: 
        type: ENUM,
        values: ['emoticon', 'text', 'image', 'video', 'audio', 'card'],
        allowNull: false,
        defaultValue: 'text',
        comment: '类型'
      ,
      options: 
        type: TEXT,
        allowNull: false,
        defaultValue: '',
        comment: '其他参数',
      ,
      user_id: 
        type: INTEGER(20).UNSIGNED,
        allowNull: false,
        comment: '用户id',
        //  定义外键(重要)
        references: 
          model: 'user', // 对应表名称(数据表名称)
          key: 'id' // 对应表的主键
        ,
        onUpdate: 'restrict', // 更新时操作
        onDelete: 'cascade'  // 删除时操作
      ,
      created_at: DATE,
      updated_at: DATE
    );
  ,

  down: async queryInterface => 
    await queryInterface.dropTable('fava');
  
;

创建数据库模型 app/model/fava.js

'use strict';
const crypto = require('crypto');
module.exports = app => 
    const  INTEGER, STRING, DATE, ENUM, TEXT  = app.Sequelize;
    // 配置(重要:一定要配置详细,一定要!!!)
    const Fava = app.model.define('fava', 
        id: 
            type: INTEGER(20).UNSIGNED,
            primaryKey: true,
            autoIncrement: true
        ,
        data: 
            type: TEXT,
            allowNull: false,
            defaultValue: '',
            comment: '内容',
        ,
        type: 
            type: ENUM,
            values: ['emoticon', 'text', 'image', 'video', 'audio', 'card'],
            allowNull: false,
            defaultValue: 'text',
            comment: '类型'
        ,
        options: 
            type: TEXT,
            allowNull: false,
            defaultValue: '',
            comment: '其他参数',
        ,
        user_id: 
            type: INTEGER(20).UNSIGNED,
            allowNull: false,
            comment: '用户id',
            //  定义外键(重要)
            references: 
                model: 'user', // 对应表名称(数据表名称)
                key: 'id' // 对应表的主键
            ,
            onUpdate: 'restrict', // 更新时操作
            onDelete: 'cascade'  // 删除时操作
        ,
        created_at: DATE,
        updated_at: DATE
    );

    return Fava;
;

创建app/controller/fava.js

'use strict';

const Controller = require('egg').Controller;

class FavaController extends Controller 
    // 创建收藏
    async create() 
        const  ctx, app  = this;
        let current_user_id = ctx.authUser.id;
        // 参数验证
        ctx.validate(
            type: 
                type: 'string',
                required: true,
                range: 
                    in: ['text', 'image', 'video', 'audio', 'emoticon', 'card']
                ,
                desc: '消息类型'
            ,
            data: 
                type: 'string',
                required: true,
                desc: '消息内容'
            ,
            options: 
                type: 'string',
                required: true
            
        );
        let  type, data, options  = ctx.request.body;
        await app.model.Fava.create(
            type, data, options,
            user_id: current_user_id
        );

        return ctx.apiSuccess('ok');

    
    // 收藏列表
    async list() 
        const  ctx, app  = this;
        let current_user_id = ctx.authUser.id;

        let page = ctx.params.page ? parseInt(ctx.params.page) : 1;
        let limit = ctx.query.limit ? parseInt(ctx.query.limit) : 10;
        let offset = (page - 1) * limit;

        let rows = await app.model.Fava.findAll(
            where: 
                user_id: current_user_id
            ,
            offset,
            limit,
            order: [
                ['id', 'DESC']
            ]
        );

        return ctx.apiSuccess(rows);
    
    // 删除收藏
    async destroy() 
        const  ctx, app  = this;
        let current_user_id = ctx.authUser.id;

        ctx.validate(
            id: 
                type: "int",
                required: true
            
        );

        let  id  = ctx.request.body;

        await app.model.Fava.destroy(
            where: 
                id,
                user_id: current_user_id
            
        );

        return ctx.apiSuccess('ok');
    


module.exports = FavaController;

router.js

 // 创建收藏
  router.post('/fava/create',controller.fava.create);
  // 收藏列表
  router.get('/fava/:page',controller.fava.list);
  // 删除收藏
  router.post('/fava/destroy',controller.fava.destroy);
  

感谢大家观看,我们下次见

以上是关于uni-app 127收藏相关接口开发的主要内容,如果未能解决你的问题,请参考以下文章

uni-app 20收藏列表开发

收藏|分享前端开发常用代码片段

uni-app 21公共搜索页开发

十个html5代码片段,超实用,一定要收藏

uni-app 69发送消息接口开发-单聊

uni-app 128创建收藏和收藏列表