nelts架构的ORM库。
npm i @nelts/ormimport{Plugin}from'@nelts/nelts';exportdefaultasync(app: Plugin)=>{app.on('props',asyncconfigs=>{awaitapp.getComponent('@nelts/orm').props({// sequelize configs: http://docs.sequelizejs.com/manual/dialects.htmlsequelize: {database: configs.sequelize.database,username: configs.sequelize.username,password: configs.sequelize.password,options: configs.sequelize.options,},// local redis: true// object redis: { port, host }// string redis: `${host}:${port}`redis: '192.168.2.208:6379'});});}在项目目录下存在一个sequelize目录,里面指定的目录结构是这样的 sequelize/${database_name}/${table_name}.ts。每个ts文件内容请参考这里
import{sequelize}from'@nelts/orm';const{ Sequelize, Model, DataTypes }=sequelize;exportdefaultclassMaintainersextendsModel{publicid: number;publicaccount: string;publicpid: number;publicctime: Date;publicstaticinstaller(sequelize: Sequelize){Maintainers.init({id: {type: DataTypes.INTEGER.UNSIGNED,primaryKey: true,autoIncrement: true},account: DataTypes.STRING(100),pid: DataTypes.INTEGER({length: 11}),ctime: DataTypes.DATE},{tableName: 'maintainer',
sequelize,createdAt: 'ctime',updatedAt: 'utime',charset: 'utf8',collate: 'utf8_general_ci',});}}public static installer(sequelize: Sequelize) 函数必须存在,定义创建表的结构。
Redis是存在于 ctx.redis 上。
set(key: string, obj: any, expire?: number): Promise<void>;get(key: string): Promise<any>;exists(key: string): Promise<any>;delete(key: string): Promise<any>;clear(): Promise<void>;
具体请看 /src/redis.ts 源码。
import{Component,Context}from'@nelts/nelts';import{Cacheable,CacheableInterface}from'../index';exportdefaultclassIndexServiceextendsComponent.Service{constructor(ctx: Context){super(ctx);}
@Cacheable('/test/:id(\\d+)')asyncvalid(){returnawaitthis.ctx.dbomaintainer.findAll({attributes: ['id','pid','account','ctime']});}asyncget(){constobj: CacheableInterface=awaitthis.valid();returnawaitobj.get({id: 123});}}@Cacheable('/test/:id(\\d+)')注解指定service的方法valid是一个缓存函数。那么可以如下调用:
// eg: in controllerconstservice=newthis.service.IndexService(ctx);constobj: CacheableInterface=awaitservice.valid();constresult=awaitobj.invoke();constresult=awaitobj.set({id: 234},10000);constresult=awaitobj.get({id: 234},10000);awaitobj.delete({id: 234});Copyright (c) 2019-present, yunjie (Evio) shen