Getting started - 入门

    建立连接

    Sequelize将在初始化时设置连接池,所以如果从单个进程连接到数据库,你最好每个数据库只创建一个实例。 如果要从多个进程连接到数据库,则必须为每个进程创建一个实例,但每个实例应具有“最大连接池大小除以实例数”的最大连接池大小。 因此,如果您希望最大连接池大小为90,并且有3个工作进程,则每个进程的实例应具有30的最大连接池大小。

    1. const sequelize = new Sequelize('database', 'username', 'password', {
    2. host: 'localhost',
    3. dialect: 'mysql'|'sqlite'|'postgres'|'mssql',
    4. operatorsAliases: false,
    5. pool: {
    6. max: 5,
    7. min: 0,
    8. acquire: 30000,
    9. },
    10. // 仅限 SQLite
    11. storage: 'path/to/database.sqlite'
    12. });
    13. // 或者你可以简单地使用 uri 连接

    Sequelize 构造函数可以通过 获得一整套可用的参数。

    您可以使用 .authenticate() 函数来测试连接。

    1. sequelize
    2. .authenticate()
    3. .then(() => {
    4. console.log('Connection has been established successfully.');
    5. })
    6. .catch(err => {
    7. console.error('Unable to connect to the database:', err);
    8. });

    你的第一个模型

    模型使用 sequelize.define('name', {attributes}, {options}) 来定义.

    1. User.findAll().then(users => {
    2. })

    您可以在 上查看更多关于模型的查找器功能,如 .findAll() 。或者在 Querying 上查看如何执行特定查询,如 WHEREJSONB

    Sequelize 构造函数使用 define 参数,该参数将用作所有定义模型的默认参数。

    1. define: {
    2. timestamps: false // 默认为 true
    3. }
    4. });
    5. const User = sequelize.define('user', {}); // 时间戳默认为 false
    6. const Post = sequelize.define('post', {}, {
    7. timestamps: true // 时间戳此时为 false
    8. });

    Promise

    Sequelize 使用 Bluebird promise 来控制异步控制流程。

    注意: Sequelize 使用 Bluebird 实例的独立副本。如果你想设置任何 Bluebird 特定的参数可以通过使用 Sequelize.Promise 来访问它。

    基本上,一个 promise 代表了某个时候会出现的值 - 这意味着“我保证你会在某个时候给你一个结果或一个错误”。

    这将永远不可用!这是因为user是 promise 对象,而不是数据库中的数据行。 正确的方法是:

    1. User.findOne().then(user => {
    2. console.log(user.get('firstName'));
    3. });

    当您的环境或解释器支持 时,这将可用,但只能在 async 方法体中:

    1. user = await User.findOne()
    2. console.log(user.get('firstName'));

    一旦知道了什么是 promise 以及它们的工作原理,请使用 作为转移工具。 尤其是,你可能会使用很多