express之Sequelize使用

共 2201字,需浏览 5分钟

 ·

2022-08-12 16:44

安装

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:传入连接URI
const 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()方法。

查询

以下是一些简单的查询:

// 查询所有 users
User.findAll().then(users => {
console.log("All users:", JSON.stringify(users, null, 4));
});

// 创建一个新 user
User.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");
});


浏览 40
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报