sequelize入门

sequelize是nodejs里的一个ORM框架。它可以让开发者用OOP的方式操作数据库,让编码更优雅、易读。

官方网址:http://docs.sequelizejs.com/

以下是本人入门学习时写的实现代码,记录下来方便以后查阅。


const Sequelize = require('sequelize');

/* 配置数据库信息 */
const sequelize = new Sequelize('demo', 'root', 'password', {
  host: 'localhost',
  dialect: 'mysql', // 需要安装 mysql2 模块(npm install --save mysql2)
  operatorsAliases: false,

  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000,
  },
});

/* 验证数据库连接 */
sequelize.authenticate()
  .then(() => console.log('Connection has been established successfully.'))
  .catch(err => {
    console.error('Unable to connect to the database.');
    throw err;
  });

/* ORM映射配置 */
const User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING,
    // 定义数据库字段名
    field: 'first_name',
  },
  lastName: {
    type: Sequelize.STRING,
    field: 'last_name',
  },
}, {
  // 使用下划线分隔符,主要用在自动追加的 createdAt 和 updatedAt 两个字段
  underscored: true,
  // 定义数据库表名
  freezeTableName: true,
  tableName: 'user',
});

/* 保存与查询数据 */
User.sync()
  .then(() => User.create({
    firstName: 'M',
    lastName: 'G',
  }))
  .then(() => User.findAll())
  .then(users => console.log(JSON.stringify(users)));

/* 事务回滚 */
sequelize.transaction(t => {
  // 保存第1条数据
  return User.create({
    firstName: 'M',
    lastName: 'G',
  }, {
    transaction: t,
  }).then(() => {
    // 保存第2条数据
    return User.create({
      firstName: 'M',
      lastName: 'G',
    }, {
      transaction: t,
    });
  }).then(() => {
    // 为了事务回滚,需要抛出异常。
    // 所以执行的结果是,以上2条数据均不会被保存。
    throw new Error('error');
  });
}).then(() => console.log('Transaction has been committed.'))
  .catch(err => console.log('Transaction has been rolled back.'));
You Might Also Like
发表评论