Getting started - 入门
建立连接
Sequelize将在初始化时设置连接池,所以如果从单个进程连接到数据库,你最好每个数据库只创建一个实例。 如果要从多个进程连接到数据库,则必须为每个进程创建一个实例,但每个实例应具有“最大连接池大小除以实例数”的最大连接池大小。 因此,如果您希望最大连接池大小为90,并且有3个工作进程,则每个进程的实例应具有30的最大连接池大小。
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'|'sqlite'|'postgres'|'mssql',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
},
// 仅限 SQLite
storage: 'path/to/database.sqlite'
});
// 或者你可以简单地使用 uri 连接
Sequelize 构造函数可以通过 获得一整套可用的参数。
您可以使用 .authenticate()
函数来测试连接。
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
你的第一个模型
模型使用 sequelize.define('name', {attributes}, {options})
来定义.
User.findAll().then(users => {
})
您可以在 上查看更多关于模型的查找器功能,如 .findAll()
。或者在 Querying 上查看如何执行特定查询,如 WHERE
和 JSONB
。
Sequelize 构造函数使用 define
参数,该参数将用作所有定义模型的默认参数。
define: {
timestamps: false // 默认为 true
}
});
const User = sequelize.define('user', {}); // 时间戳默认为 false
const Post = sequelize.define('post', {}, {
timestamps: true // 时间戳此时为 false
});
Promise
Sequelize 使用 Bluebird promise 来控制异步控制流程。
注意: Sequelize 使用 Bluebird 实例的独立副本。如果你想设置任何 Bluebird 特定的参数可以通过使用 Sequelize.Promise
来访问它。
基本上,一个 promise 代表了某个时候会出现的值 - 这意味着“我保证你会在某个时候给你一个结果或一个错误”。
这将永远不可用!这是因为user
是 promise 对象,而不是数据库中的数据行。 正确的方法是:
User.findOne().then(user => {
console.log(user.get('firstName'));
});
当您的环境或解释器支持 时,这将可用,但只能在 async 方法体中:
user = await User.findOne()
console.log(user.get('firstName'));