gg-thinkorm
v1.0.1
Published
对thinkorm做了点小修改
Downloads
1
Readme
介绍
A flexible, lightweight and powerful Object-Relational Mapper for Node.js.
ThinkORM是一个可扩展轻量级的功能丰富的对象-关系映射的数据模型封装框架,使用Node.js实现。
如同SQL语言发明一样,ThinkORM试图用一种抽象的统一操作语言,尽量保持各种数据库书写语法一致,用户专注于数据操作逻辑而非具体的数据存储类型,达到快速开发和移植的目的。
let info = await model.where({id: {'<>': 1, '>=': 0}, name: 'bb', or: [{name: 'aa'}, {name: 'cc'}]}).find();
项目地址: Git Repo
特性
基于Knex.js实现,支持 Mysql/MariaDB, PostgresSql, SQLite3, Oracle, MSSQL. (即将支持MongoDB)
抽象的面向对象式SQL操作语言,保持各种数据库书写语法一致,方便开发和项目迁移
支持schema定义数据结构,支持严格的类型检查;支持数据结构迁移到数据库,通过migrate方法调用
支持hasone,hasmany,manytomany关联查询
支持left,right,inner join查询,支持count,sum,group查询
支持连接池配置.支持数据链接检测以及自动重联,数据库服务的宕机修复后无需重启应用
支持事务操作,包括同模型、跨模型、并行事务(Mysql/MariaDB, PostgresSql)
支持数据自动验证以及自定义规则验证,且规则可扩展
支持前置、后置逻辑处理
安装
npm install thinkorm --save
使用
//class User.js
const {BaseModel, helper} = require('thinkorm');
const User = class extends BaseModel {
// 构造方法
init(){
// 模型名称,映射实体表 user
this.modelName = 'user';
// 数据表字段信息
this.fields = {
id: {
type: 'integer',
pk: true
},
name: {
type: 'string',
size: 30,
index: true,
defaults: ''
}
};
}
}
//CURD
const userModel = new User(config);
// add
let result = await userModel.add({"name": "张三"});
// delete
result = await userModel.where({id: 1}).delete();
// update
result = await userModel.where({id: 2}).update({"name": "李四"});
// select
result = await userModel.where({id: 3}).find(); //limit 1
result = await userModel.where({"name": {"<>": ""}}).select(); //query name is not null
文档
贡献者
- richenlin
- richerdlee
协议
MIT