Skip to content

Latest commit

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

@nelts/orm

nelts架构的ORM库。

Install

npm i @nelts/orm

Configure

import{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 Models

在项目目录下存在一个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

Redis是存在于 ctx.redis 上。

Redis operations

  • 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 源码。

Use Cacheable in service

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});

License

MIT

Copyright (c) 2019-present, yunjie (Evio) shen

About

nelts orm

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages