(序列化)hasOne关联未创建外键

时间:2019-06-11 10:53:28

标签: node.js sequelize.js associations has-one

我创建了以下两个模型

UserModel

const UserModel = database.define("user", {
    name: {
        type: Sequelize.STRING(30),
        allowNull: false,
        validate: {
            notNull: {
                msg: "name is required"
            },
            notEmpty: {
                msg: "name cannot be empty"
            }
        }
    },
    email: {
        type: Sequelize.STRING(30),
        allowNull: false,
        unique: true,
        validate: {
            isEmail: {
                msg: "invalid email provided"
            },
            notNull: {
                msg: "email is required"
            },
            notEmpty: {
                msg: "email cannot be empty"
            }
        }
    },
    password: {
        type: Sequelize.STRING,
        allowNull: false,
        validate: {
            notNull: {
                msg: "password is required"
            },
            notEmpty: {
                msg: "password cannot be empty"
            }
        }
    }
})

用户类型

const UserType = database.define("userType", {
    name: {
        type : Sequelize.STRING(30),
        allowNull: false,
        validate: {
            notNull: {
                msg: "name is required"
            },
            notEmpty: {
                msg: "name cannot be empty"
            }
        }
    }
})

我需要的关联如下

  1. 每个UserModel都应具有一个状态。 我使用sqlite作为方言。

要实现这一点,我会像下面这样编码

UserModel.hasOne(UserType, { foreignKey: { allowNull : false }, onDelete: "CASCADE" })

为此生成的SQL正在关注

  

如果不存在usersid整数主键自动递增,name VARCHAR(30)不为空,email VARCHAR(30)不为空,则创建表{1}} VARCHAR(255)NOT NULL,password DATETIME NOT NULL,createdAt DATETIME NOT NULL);

我已经看到通过两种方式声明关联

updatedAt

在这种情况下,UserModel.hasOne(UserType, { foreignKey: { allowNull : false }, onDelete: "CASCADE" }) UserType.hasMany(UserModel, { foreignKey: { allowNull : false }, onDelete: "CASCADE" }) 的生成方式如下

  

如果不存在SQLusers整数主键自动递增,id VARCHAR(30)不为空,name VARCHAR(30)不为空,{{ 1}} VARCHAR(30)非空唯一性,lastName VARCHAR(255)非空,email DATETIME非空,password DATETIME非空,createdAt整数非空引用updatedAtuserTypeId)在删除级联时在更新级联上);

即使我只放一行,外键也会在userTypes中创建

id

我已阅读hasOne doc / issue。在github问题中,它说应该更新文档(@ 2014)。那么当前的SQL关联在做什么?

另一件事,我知道需要两种方式的关联才能获得相关的模型reference,但是我不需要反向方式的关联,例如获取给定UserType.hasMany(UserModel, { foreignKey: { allowNull : false }, onDelete: "CASCADE" }) 的所有hasOne,那就是为什么我只声明一种单向关联。

0 个答案:

没有答案