序列化模型关系

时间:2018-06-30 18:28:19

标签: mysql node.js sequelize.js

我在这里有2个型号-

user.js

<FlexboxLayout flexWrap="wrap" height="50%" width="100%" backgroundColor="lightgray">
<Label text="Label 1" width="50%" height="50" backgroundColor="red"/>
<Label text="Label 2" width="50%" height="50" backgroundColor="green"/>
<Label text="Label 3" width="50%" height="50" backgroundColor="blue"/>
<Label text="Label 4" width="100" height="50" backgroundColor="yellow"/>
</FlexboxLayout>  

userprofile.js

module.exports = (sequelize, DataType) => {

  const User = sequelize.define('user', {
    id: {
      autoIncrement: true,
      primaryKey: true,
      type: DataType.INTEGER
    },
    username: {
      type: DataType.STRING,
      unique: true,
      validate: {
        len:
          { args: [4, 20], msg: "Username should be contain 4-20 characters." },
        isAlphanumeric:
          { msg: "Only letters and numbers are allowed" }
      }
    },
    email: {
      type: DataType.STRING,
      unique: true,
      validate: {
        isEmail:
          { msg: "Provide proper email" }
      }
    },
    password: DataType.STRING,
    emailverified: DataType.BOOLEAN
  });

  User.associate = function (models) {
    // associations can be defined here
  };

有人可以举一个例子,说明如何设置用户用户个人资料的1:N关系,即1个用户可以有N个用户个人资料以及通过创建这种关系,每当创建用户时,记录会自动在用户个人资料表下生成吗?

谢谢

1 个答案:

答案 0 :(得分:0)

做了一些研究- 参考:https://github.com/sequelize/express-example/blob/master/models/user.js

module.exports = (sequelize, DataType) => {

  const User = sequelize.define('user', {
    id: {
      autoIncrement: true,
      primaryKey: true,
      type: DataType.INTEGER
    },
    username: {
      type: DataType.STRING,
      unique: true,
      validate: {
        len:
          { args: [4, 20], msg: "Username should be contain 4-20 characters." },
        isAlphanumeric:
          { msg: "Only letters and numbers are allowed" }
      }
    },
    email: {
      type: DataType.STRING,
      unique: true,
      validate: {
        isEmail:
          { msg: "Provide proper email" }
      }
    },
    password: DataType.STRING,
    emailverified: DataType.BOOLEAN
  });

  User.associate = (models) => {
    User.hasMany(models.userprofile, {
      foreignKey: 'userid',
    });
  };

上面的代码在userprofile表中创建一个外键,并且自动生成未完成。