返回

Sequelize 中常用的一些方法和参数

前端

Sequelize 是一个流行的 ORM(对象关系映射)库,用于 Node.js,可以帮助我们轻松地操作数据库。它支持多种数据库,包括 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server。在本文中,我们将介绍 Sequelize 中的一些常用方法和参数,以便您更有效地使用它。

Sequelize.define() 方法用于定义一个模型,它接受两个参数:模型名称和模型定义。模型名称是一个字符串,用于标识模型,模型定义是一个对象,用于指定模型的属性和关系。例如,以下代码定义了一个名为 User 的模型:

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

const User = sequelize.define('User', {
  id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true
  },
  username: {
    type: Sequelize.STRING,
    allowNull: false
  },
  password: {
    type: Sequelize.STRING,
    allowNull: false
  }
});

要实例化一个模型,可以使用 new 操作符。例如,以下代码实例化了一个新的 User 对象:

const user = new User({
  username: 'johndoe',
  password: 'secret'
});

要将模型保存到数据库中,可以使用 save() 方法。例如,以下代码将 user 对象保存到数据库中:

user.save();

要查找模型,可以使用 find() 方法。例如,以下代码查找具有特定 ID 的用户:

const user = await User.findOne({
  where: {
    id: 1
  }
});

要更新模型,可以使用 update() 方法。例如,以下代码更新具有特定 ID 的用户的密码:

const user = await User.findOne({
  where: {
    id: 1
  }
});
user.password = 'newsecret';
await user.save();

要删除模型,可以使用 destroy() 方法。例如,以下代码删除具有特定 ID 的用户:

const user = await User.findOne({
  where: {
    id: 1
  }
});
await user.destroy();

Sequelize 可以用于关联模型。例如,以下代码定义了一个名为 Post 的模型,它与 User 模型具有多对一的关系:

const Post = sequelize.define('Post', {
  id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true
  },
  title: {
    type: Sequelize.STRING,
    allowNull: false
  },
  content: {
    type: Sequelize.STRING,
    allowNull: false
  },
  userId: {
    type: Sequelize.INTEGER,
    references: {
      model: User,
      key: 'id'
    }
  }
});

要查询关联模型,可以使用 include() 方法。例如,以下代码查询具有特定 ID 的用户及其所有帖子:

const user = await User.findOne({
  where: {
    id: 1
  },
  include: [
    {
      model: Post,
      as: 'posts'
    }
  ]
});

Sequelize 还提供了一些参数,用于配置 ORM 的行为。例如,以下参数用于配置连接池:

const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql',
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

有关 Sequelize 的更多信息,请参阅官方文档:https://sequelize.org/

我希望本文对您有所帮助。如果您有任何问题,请随时留言。


npm version npm license npm downloads