Skip to content
A flexible, lightweight and powerful Object-Relational Mapper for Node.js.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
test
.eslintrc
.gitignore
.npmignore
.travis.yml
LICENSE
README.md
index.js
package-lock.json
package.json

README.md

介绍

npm version Build Status Dependency Status

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

特性

  1. 基于Knex.js实现,支持 Mysql/MariaDB, PostgresSql, SQLite3, Oracle, MSSQL. (即将支持MongoDB)

  2. 抽象的面向对象式SQL操作语言,保持各种数据库书写语法一致,方便开发和项目迁移

  3. 支持schema定义数据结构,支持严格的类型检查;支持数据结构迁移到数据库,通过migrate方法调用

  4. 支持hasone,hasmany,manytomany关联查询

  5. 支持left,right,inner join查询,支持count,sum,group查询

  6. 支持连接池配置.支持数据链接检测以及自动重联,数据库服务的宕机修复后无需重启应用

  7. 支持事务操作,包括同模型、跨模型、并行事务(Mysql/MariaDB, PostgresSql)

  8. 支持数据自动验证以及自定义规则验证,且规则可扩展

  9. 支持前置、后置逻辑处理

安装

npm install thinkorm --save

使用

//class User.js
const {model, helper} = require('thinkorm');

const User = class extends model {
    // 构造方法
    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

文档

https://www.thinkkoa.org/orm/

贡献者

  • richenlin
  • richerdlee

协议

MIT

You can’t perform that action at this time.