您的位置:

Node.js ORM详解

一、什么是ORM

ORM(Object Relational Mapping)对象关系映射,是一种将面向对象语言程序中的对象自动持久化到关系型数据库中的技术。

ORM可以让程序员使用面向对象的编程方式操作数据库,屏蔽掉底层数据库的许多复杂操作。ORM框架对于开发者来说,降低了开发难度和维护成本,提高了代码的可读性和可维护性。

二、Node.js中ORM的应用场景

ORM在Node.js中的应用场景主要包括:

1、数据库的增删改查操作;

2、将数据转化为对象,方便操作;

3、使用js语言操作关系型数据库,不需要写复杂的SQL语句;

4、屏蔽底层数据库依赖,同时提高了代码的可移植性。

三、Node.js ORM模块

Node.js中常用的ORM框架有很多,比如Sequelize、TypeORM、Bookshelf、Waterline等,而在这里我们关注一个基于Sequelize开发的ORM模块:sequelize。

四、使用sequelize操作MySQL数据库(示例)

//引入 sequelize
const Sequelize = require('sequelize');
//建立连接
const sequelize = new Sequelize('database_name', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql',
  //用户名密码是否需要加密
  operatorsAliases: false,
  define: {
    //取消Sequeilze的数据表名自动复数化
    freezeTableName: true
  },
  //时区
  timezone: '+08:00'
});

sequelize.authenticate().then(() => {
  console.log('Connection has been established successfully.');
}).catch(err => {
  console.error('Unable to connect to the database:', err);
});

//定义模型
const Model = Sequelize.Model;
class User extends Model {}
User.init({
  id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true,
    comment: '用户ID'
  },
  name: {
    type: Sequelize.STRING(200),
    comment: '用户姓名'
  },
  age: {
    type: Sequelize.INTEGER,
    comment: '用户年龄'
  }
}, {
  sequelize,
  modelName: 'user'
});

//创建表格
sequelize.sync({
  force: false //强制创建表,存在则删除后重新创建
}).then(() => {
  console.log('OK')
});

//增加
User.create({ name: 'tom', age: 25 }).then(user => {
  console.log(user.toJSON());
});

//查询
User.findAll().then(users => {
  console.log(users);
});

//修改
User.update({ name: 'jerry' }, { where: { age: 25 } }).then(ret => {
  console.log(ret);
});

//删除
User.destroy({ where: { age: 25 } }).then(ret => {
  console.log(ret);
});

五、sequelize常用API

1、define 定义模型

2、sync 同步表格

3、create 添加数据

4、findAll 查询数据

5、update 更新数据

6、destroy 删除数据

7、query 原生SQL语句查询

8、transaction 事务操作

9、hook 钩子函数

10、数据库关系映射定义

六、总结

ORM框架是现代化Web开发工具中必不可少的一环,对于减少程序员错误率、提高开发效率和代码可读性都起到了积极的作用。Node.js中的ORM模块sequelize提供了一系列的API函数,使得我们能够快速地进行数据库操作,同时减少了代码的编写量,是一个很好的选择。