您的位置:首页 >聚焦 >

最资讯丨express之Sequelize使用

2022-08-12 17:36:13    来源:程序员客栈
安装

Sequelize可以通过npm(或yarn)安装:


(资料图片)

npm install --save sequelize

除安装sequelize模块外,还需要手工安装你所使用的数据库驱动模块:

$ npm install --save pg pg-hstore # Postgres$ npm install --save mysql2

建立连接

要连接到数据库,必须创建一个Sequelize实例。这可以通过将连接参数分别传递到Sequelize构造函数,或通过传递单个连接URI来完成:

const Sequelize = require("sequelize");// 选项1:分别传入参数const sequelize = new Sequelize("database", "username", "password", {  host: "localhost",  dialect: /* "mysql" | "mariadb" | "postgres" | "mssql" 之一 */});// 选项1:传入连接URIconst sequelize = new Sequelize("postgres://user:pass@example.com:5432/dbname");

测试连接

可以使用.authenticate()函数测试连接是否正常:

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

对表建模

模型是对Sequelize.Model类的扩展。模型可以通过两种方式定义。首先,可以通过Sequelize.Model.init(attributes, options):

const Model = Sequelize.Model;class User extends Model {}User.init({  // attributes  firstName: {    type: Sequelize.STRING,    allowNull: false  },  lastName: {    type: Sequelize.STRING    // allowNull defaults to true  }}, {  sequelize,  modelName: "user"  // options});

或者,使用sequelize.define:

const User = sequelize.define("user", {  // attributes  firstName: {    type: Sequelize.STRING,    allowNull: false  },  lastName: {    type: Sequelize.STRING    // allowNull defaults to true  }}, {  // options});

模型与数据库同步

如果你想 Sequelize 通过定义的模型自动创建表(或修改已存在的表),可以使用sync方法,如下所示:

// 注意: `force: true` 选项会在表存在时首先删除表User.sync({ force: true }).then(() => {  // 现在 `users` 表会与模型定义一致  return User.create({    firstName: "John",    lastName: "Hancock"  });});

一次同步所有模型

可以使用sequelize.sync()方法来同步所有模型,而不是调用每个模型的sync()方法。

查询

以下是一些简单的查询:

// 查询所有 usersUser.findAll().then(users => {  console.log("All users:", JSON.stringify(users, null, 4));});// 创建一个新 userUser.create({ firstName: "Jane", lastName: "Doe" }).then(jane => {  console.log("Jane"s auto-generated ID:", jane.id);});// 删除每个名为 "Jane" 的记录User.destroy({  where: {    firstName: "Jane"  }}).then(() => {  console.log("Done");});// 修改每个`lastName`为`null`的记录修改为"Doe"User.update({ lastName: "Doe" }, {  where: {    lastName: null  }}).then(() => {  console.log("Done");});

关键词: 可以使用 手工安装 所使用的

相关阅读