Sequelize 是一款 Node.js ORM(对象关系映射)框架,它提供了对多种数据库的支持,包括 MySQL、PostgreSQL、SQLite、MariaDB、MSSQL 等。在实际开发中,我们可能会需要使用多个数据源或者多个模型,本文将介绍如何在 Sequelize 中配置多数据源和多模型。
配置多数据源
在 Sequelize 中,我们可以通过 Sequelize 构造函数来创建一个数据库实例。如果我们需要使用多个数据源,可以创建多个 Sequelize 实例,每个实例对应一个数据源。下面是一个例子:
// www.javascriptcn.com code example
const Sequelize = require('sequelize');
const db1 = new Sequelize('database1', 'username1', 'password1', {
host: 'localhost',
dialect: 'mysql'
});
const db2 = new Sequelize('database2', 'username2', 'password2', {
host: 'localhost',
dialect: 'mysql'
});
module.exports = {
db1,
db2
};上面的代码创建了两个 Sequelize 实例,分别对应两个数据库。db1 和 db2 可以在其他模块中引用,用于创建模型和进行数据库操作。
配置多模型
在 Sequelize 中,每个模型对应一个数据库表。如果我们需要使用多个模型,可以在每个 Sequelize 实例上创建多个模型。下面是一个例子:
// www.javascriptcn.com code example
const { db1, db2 } = require('./db');
const User1 = db1.define('user', {
name: Sequelize.STRING,
age: Sequelize.INTEGER
});
const User2 = db2.define('user', {
name: Sequelize.STRING,
age: Sequelize.INTEGER
});
module.exports = {
User1,
User2
};上面的代码创建了两个模型 User1 和 User2,分别对应两个数据库中的 user 表。User1 和 User2 可以在其他模块中引用,用于进行数据库操作。
示例代码
下面是一个完整的示例,展示如何在 Sequelize 中配置多数据源和多模型:
// www.javascriptcn.com code example
const Sequelize = require('sequelize');
// 创建两个 Sequelize 实例,分别对应两个数据库
const db1 = new Sequelize('database1', 'username1', 'password1', {
host: 'localhost',
dialect: 'mysql'
});
const db2 = new Sequelize('database2', 'username2', 'password2', {
host: 'localhost',
dialect: 'mysql'
});
// 在每个 Sequelize 实例上创建两个模型,分别对应两个数据库中的 user 表
const User1 = db1.define('user', {
name: Sequelize.STRING,
age: Sequelize.INTEGER
});
const User2 = db2.define('user', {
name: Sequelize.STRING,
age: Sequelize.INTEGER
});
// 同步两个数据库
Promise.all([db1.sync(), db2.sync()]).then(() => {
console.log('Synced');
}).catch((err) => {
console.error(err);
});
// 在第一个数据库中创建一个用户
User1.create({
name: 'Alice',
age: 20
}).then(() => {
console.log('Created user in db1');
}).catch((err) => {
console.error(err);
});
// 在第二个数据库中创建一个用户
User2.create({
name: 'Bob',
age: 30
}).then(() => {
console.log('Created user in db2');
}).catch((err) => {
console.error(err);
});上面的代码创建了两个数据库和两个模型,并在两个数据库中分别创建了一个用户。在实际开发中,我们可以根据需要创建多个数据源和多个模型,以满足业务需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d0e62fa941bf71341e83ad