【问题标题】:Sequelize - How to define ON DELETE action during model definitionSequelize - 如何在模型定义期间定义 ON DELETE 操作
【发布时间】:2020-10-05 19:05:50
【问题描述】:

我想问你是否可以在定义 Sequelize 模型时设置 ON DELETE 动作,例如:

sequelize.define('oAuthAccessTokens', {
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    createdAt: Sequelize.DATE,
    updatedAt: Sequelize.DATE,
    accessToken: { type: Sequelize.STRING(256), allowNull: false },
    expires: { type: Sequelize.DATE, allowNull: false },
    scope: Sequelize.STRING(255),
    clientId: {
        type: Sequelize.STRING(80),
        allowNull: false,
        references: {
            model: 'oAuthClients',
            key: "clientId",
            **onDelete: "cascade"** // here is my try
        }
    },
    userId: {
        type: Sequelize.INTEGER,
        allowNull: false,
        references: {
            model: 'oAuthUsers',
            key: "id",
            **onDelete: "cascade"** // here is my try
        }
    }
});

我知道可以将适当的选项传递给hasOne() 方法,但是这样的模型定义呢?希望有官方文档中没有提到的方式。

更新

问题现在解决了。 onDelete 属性应该在references 之外。

sequelize.define('oAuthAccessTokens', {
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    createdAt: Sequelize.DATE,
    updatedAt: Sequelize.DATE,
    accessToken: { type: Sequelize.STRING(256), allowNull: false },
    expires: { type: Sequelize.DATE, allowNull: false },
    scope: Sequelize.STRING(255),
    clientId: {
        type: Sequelize.STRING(80),
        allowNull: false,
        onDelete: "cascade",
        references: {
            model: 'oAuthClients',
            key: "clientId",
        }
    },
    userId: {
        type: Sequelize.INTEGER,
        onDelete: "cascade",
        allowNull: false,
        references: {
            model: 'oAuthUsers',
            key: "id"
        }
    }
});

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    问题现在解决了。 onDelete 属性应该在references 之外。

    sequelize.define('oAuthAccessTokens', {
        id: {
            type: Sequelize.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        createdAt: Sequelize.DATE,
        updatedAt: Sequelize.DATE,
        accessToken: { type: Sequelize.STRING(256), allowNull: false },
        expires: { type: Sequelize.DATE, allowNull: false },
        scope: Sequelize.STRING(255),
        clientId: {
            type: Sequelize.STRING(80),
            allowNull: false,
            onDelete: "cascade",
            references: {
                model: 'oAuthClients',
                key: "clientId",
            }
        },
        userId: {
            type: Sequelize.INTEGER,
            onDelete: "cascade",
            allowNull: false,
            references: {
                model: 'oAuthUsers',
                key: "id"
            }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2019-05-25
      • 1970-01-01
      • 2020-01-20
      • 2020-02-16
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多