Sutando: 把最好用的 ORM 复刻到 Node.js

查看 52|回复 1
作者:kiddyu   
在 v2 很多帖子都可以看到,Laravel 和 Rails 的 ORM 几乎是大家公认最好用的 ORM ,Sutando 就是他们在 Node.js 里的 “复刻版”,如果你之前用过 Laravel ,那你使用 Sutando 几乎没有学习成本,因为它们的使用起来几乎相同 (功能实现了 80%+)。
地址: https://github.com/sutandojs/sutando
文档: https://sutando.org
特性:
  • 超级友好的 API
  • 支持 MySQL, MariaDB, PostgreSQL, SQLite, MSSQL 等多种数据库(因为基于 knex )
  • 灵活的模型关联
  • 在不同模型操作阶段自定义钩子
  • 简单的插件机制

    安装:
    npm install sutando mysql2 --save
    建立连接 & 定义模型:
    const { sutando, Model } = require('sutando');
    // 连接信息
    sutando.addConnection({
      client: 'mysql2',
      connection: {
        host : '127.0.0.1',
        port : 3306,
        user : 'root',
        password : '',
        database : 'test'
      },
    });
    const db = sutando.connection();
    // 查询构造器
    const users = await db.table('users').where('age', '>', 35).get();
    // 模型定义
    class User extends Model {}
    CRUD:
    // 查询
    const users = await User.query().where('age', '>', 35).get();
    // 新增
    const user = new User;
    user.name = 'David Bowie';
    await user.save();
    // 删除
    await user.delete();
    // 分页
    const users = await User.query().paginate(1, 15);
    // 关联预加载
    const users = await User.query().with('posts').get();
    // 关联条件
    const users = await User.query().with({
      posts: q => q.where('likes_count', '>', 100)
    }).get();
    // 关联延迟加载
    await user.load('posts');
    await users.load('posts');
    最后:Welcome Star, PR and Issues !

    await, user, const, users

  • SayHelloHi   
    很棒
    文档很完善
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部