请问大家在Nodejs中都用的什么orm框架 有推荐吗?

请问大家在Nodejs中都用的什么orm框架 有推荐吗?

用的mysql数据库,准备找个orm框架。 在github上搜了下 貌似orm2,bookshelf,waterline都很受欢迎的样子,大家有啥推荐吗?

3 回复

当然可以!在Node.js生态系统中,ORM(对象关系映射)框架可以帮助你更方便地与数据库进行交互。以下是几种流行的ORM框架及其简要介绍和示例代码。

1. Sequelize

Sequelize 是一个非常强大的 ORM 框架,支持多种数据库,包括 MySQL、PostgreSQL、SQLite 和 MSSQL。

安装

npm install sequelize
npm install --save mysql2

示例代码

const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql'
});

const User = sequelize.define('User', {
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull defaults to true
  }
}, {
  // Other model options go here
});

// 使用 async/await
async function createUser() {
  const user = await User.create({
    firstName: 'John',
    lastName: 'Hancock'
  });
  console.log(user.get());
}

createUser();

2. Mongoose

Mongoose 是一个专门为 MongoDB 设计的 ORM 框架,如果你使用的是 MongoDB,这是一个不错的选择。

安装

npm install mongoose

示例代码

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true });

const Schema = mongoose.Schema;

const userSchema = new Schema({
  name: String,
  age: Number
});

const User = mongoose.model('User', userSchema);

async function createUser() {
  const user = new User({ name: 'John Doe', age: 30 });
  await user.save();
  console.log(user);
}

createUser();

3. Bookshelf

Bookshelf 是一个基于 Knex.js 的 ORM 框架,支持 MySQL、PostgreSQL 等数据库。

安装

npm install bookshelf knex mysql2

示例代码

const knex = require('knex')({
  client: 'mysql',
  connection: {
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  }
});

const bookshelf = require('bookshelf')(knex);

class User extends bookshelf.Model {}

Userforge.define('users', {
  name: String,
  email: String
});

async function createUser() {
  const user = await User.forge({ name: 'John Doe', email: 'john@example.com' }).save();
  console.log(user);
}

createUser();

总结

  • Sequelize:适合需要跨多种数据库支持的项目。
  • Mongoose:专为 MongoDB 设计,简洁易用。
  • Bookshelf:基于 Knex.js,轻量且灵活。

根据你的具体需求选择合适的 ORM 框架。希望这些示例代码能帮助你快速上手!


死月自用 toshihiko

在Node.js中使用ORM(对象关系映射)框架可以极大地简化数据库操作。针对MySQL数据库,几个流行的ORM框架包括SequelizeMongoose(虽然主要是为MongoDB设计的,但也可以用于其他数据库)、Bookshelf以及Knex配合objection.js

推荐ORM框架

  1. Sequelize:

    • 它是功能强大的ORM,支持多种数据库(包括MySQL、PostgreSQL、SQLite和Microsoft SQL Server)。
    • 拥有良好的文档和社区支持。
    • 示例代码:
      const { Sequelize, DataTypes } = require('sequelize');
      const sequelize = new Sequelize('database', 'username', 'password', {
        host: 'localhost',
        dialect: 'mysql'
      });
      
      const User = sequelize.define('User', {
        // 定义模型属性
        firstName: {
          type: DataTypes.STRING,
          allowNull: false
        },
        lastName: {
          type: DataTypes.STRING
        }
      }, {});
      
      // 同步模型到数据库
      (async () => {
        await sequelize.sync();
        console.log('Model synced.');
      })();
      
  2. Bookshelf:

    • 基于Knex.js构建,支持事务处理和关联查询。
    • 更轻量级,适合简单的项目。
    • 示例代码:
      const knex = require('knex')({
        client: 'mysql',
        connection: {
          host : '127.0.0.1',
          user : 'your_database_user',
          password : 'your_database_password',
          database : 'your_database_name'
        }
      });
      
      const bookshelf = require('bookshelf')(knex);
      
      class User extends bookshelf.Model {
        get tableName() { return 'users'; }
      }
      
      new User().fetch().then(user => console.log(user));
      
  3. Objection.js:

    • 是一个现代的,功能丰富的SQL ORM,基于Knex.js构建。
    • 提供模型验证,业务规则,插件系统等。
    • 示例代码:
      const { Model } = require('objection');
      
      class User extends Model {
        static get tableName() {
          return 'users';
        }
      }
      
      async function main() {
        const knex = require('knex')({
          client: 'mysql',
          connection: {
            host : '127.0.0.1',
            user : 'your_database_user',
            password : 'your_database_password',
            database : 'your_database_name'
          }
        });
      
        User.knex(knex);
        const users = await User.query();
        console.log(users);
      }
      

以上就是对几个ORM框架的简要介绍及示例代码,希望对你有所帮助。

回到顶部