sequelizejs之实例化
参考资料:sequelize实例化参数,读写分离模式
语法
const sequelize = new sequelize(${database},${username},${password},${options})
参数
- database:数据库名称
- username:数据库帐号
- password:数据库密码
- optios.logging:(defalut:console.log()):每次Sequelize会记录某些内容时执行的函数
- optios.timezone:(defalut:'00+00'):将日期从数据库转换为JavaScript日期时使用的时区
- optios.benchmark:(defalut:false):将查询执行时间(以毫秒为单位)作为日志记录功能的第二个参数(options.logging)
- optios.replication(defalut:false):设置读写分离,具有read,write两个属性
- optios.define:模型定义的默认选项。有关选项,请参阅sequelize.define
- optios.pool:连接池属性
- optios.pool.max(defalut:5):最大连接数
- optios.pool.min(defalut:0):最小连接数
- optios.transactionType(defalut:DEFERRED):设置默认事务类型。请参阅Sequelize.Transaction.TYPES可能的选项。仅限Sqlite
- optios.isolationLevel:设置事物隔离级别
本文只列出常使用的一些参数,更多参数请参考最新文档:http://docs.sequelizejs.com/class/lib/sequelize.js~Sequelize.html
例子
const sequelize = new Sequelize('test', 'root', '123456', {
host: 'localhost',
port: 3306,
dialect: 'mysql',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
},
define: {
underscored: false,
freezeTableName: true,
charset: 'utf8',
dialectOptions: {
collate: 'utf8_general_ci'
},
timestamps: true
},
timezone: '+08:00',
logging: false,
});
// 测试连接
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
读写分离例子
var sequelize = new Sequelize('database', null, null, {
dialect: 'mysql',
port: 3306
replication: {
read: [
{ host: '192.168.1.33', username: 'itbilu.com', password: 'pwd' },
{ host: 'localhost', username: 'root', password: null }
],
write: { host: 'localhost', username: 'root', password: null }
}
})
注意
- 所有的整体性设置,都会适用于所有节点副本,所以并不需要为每个实例单独指定。在上例中,数据库名和端口号会应用于所有节点副本,用户名和密码选项也同样适用。如果某一节点副本不使用全局设置,则需要在replication选项中单独指定。
- Sequelize 并不会设置主从复制节点及节点间的数据同步(复制),这些操作实际由MySQL(或你所使用的数据库)完成。而 Sequelize 只负责从主从节点写入或读取数据。