常用的 Node.js ORM 库一览

在 Node.js 中,ORM(Object-Relational Mapping)库可以帮助我们将关系型数据库和面向对象编程语言之间的联系嵌入到应用程序中,从而更加方便地操作数据库。下面是一些常用的 Node.js ORM 库,它们提供了丰富的功能,可以帮助开发者更加高效地管理和操作数据库。

Sequelize

Sequelize 是一个基于 Promise 的 Node.js ORM 库,支持 PostgreSQL、MySQL、MariaDB、SQLite 和 MSSQL 等多种数据库,同时也支持模型定义、关联、事务、查询、校验等多个功能。Sequelize 的 API 设计非常简单易用,代码示例如下:

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

const User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING
  },
  lastName: {
    type: Sequelize.STRING
  }
});

sequelize.sync()
  .then(() => User.create({
    firstName: 'John',
    lastName: 'Doe'
  }))
  .then(jane => {
    console.log(jane.toJSON());
  });

TypeORM

TypeORM 是一个基于 TypeScript 的 Node.js ORM 库,支持多种数据库,具有实体管理器、迁移、关联、类型转换等多个功能。TypeORM 使用了装饰器来管理数据库实体,代码示例如下:

import {Entity, Column, PrimaryGeneratedColumn} from 'typeorm';

@Entity()
export class User {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    firstName: string;

    @Column()
    lastName: string;
}

Bookshelf.js

Bookshelf.js 是一个轻量级的 Node.js ORM 库,基于 Knex.js 实现,支持 MySQL、PostgreSQL 和 SQLite 等数据库。Bookshelf.js 提供了一个类似 ActiveRecord 的查询 API,也支持 ORM 常见的功能。代码示例如下:

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

const User = bookshelf.Model.extend({
  tableName: 'users'
});

const user = new User({
  name: 'John Smith',
  email: 'john@example.com'
});

user.save().then(() => {
  console.log('User saved!');
});

Sequelize.js

Sequelize.js 是一个针对 PostgreSQL、MySQL、MariaDB、SQLite 和 MSSQL 的 ORM 库,可用于 Node.js。 Sequelize.js 非常强大,支持事务、存储过程、多关系、事务、日期类型、查询功能等。代码示例如下:

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

const User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING
  },
  lastName: {
    type: Sequelize.STRING
  }
});

sequelize.sync()
  .then(() => User.create({
    firstName: 'John',
    lastName: 'Doe'
  }))
  .then(jane => {
    console.log(jane.toJSON());
  });

总结

综上所述,这些 Node.js ORM 库都是非常强大可靠的。你可以根据自己的需求,选择合适的库来使用。无论哪一个库,都提供了良好的文档和社区支持,有了它们,我们能够更加轻松地进行数据库访问,完成我们的应用程序。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/659e8a9cadd4f0e0ff77262d


纠错反馈