Sequelize.js 属性未与模型关联,如果关系使用;作为「;

Sequelize.js 属性未与模型关联,如果关系使用;作为「;,sequelize.js,Sequelize.js,数据库:mysql 5.5 续集版本:3.30.4 用户角色模型 sequelize.define('userRole', { uid: { type: DataTypes.UUID, primaryKey: true }, name: { type: DataTypes.STRING, unique: true } }, { freezeTableName: false, tab

数据库:mysql 5.5

续集版本:3.30.4

用户角色模型

sequelize.define('userRole', {
    uid: {
      type: DataTypes.UUID,
      primaryKey: true
    },
    name: {
      type: DataTypes.STRING,
      unique: true
    }
  },
    {
      freezeTableName: false,
      tableName: 'user_roles'
    }
  )
用户模型

sequelize.define('user', {
    uid: {
      type: DataTypes.UUID,
      primaryKey: true
    },
    login: {
      type: DataTypes.STRING,
      unique: true,
      allowNull: false
    }
  },
    {
      freezeTableName: false,
      tableName: 'users'
    }
  )
和关系

Users.belongsTo(UserRoles, { as: 'role' })
正在尝试插入新用户

Users.create({
    uid: uuid(),
    login: 'login',
    password: 'password',
    role: {
      uid: uuid(),
      name: 'admin'
    }
  }, {
      include: [Types.UserRoles]
    })
错误:userRole未与用户关联

试图使用

role: {
      uid: uuid(),
      name: 'admin'
    }

但没有区别

如果我改变关系到

Users.belongsTo(UserRoles)

一切都很好

当使用
将关系定义为
选项时,您需要记住在执行查询时包含别名,以便急切地加载这些关系,因此您需要更改
create()
并在
include
中添加
as
选项:

Users.create({
uid:uuid(),
登录:'登录',
密码:“password”,
角色:{
uid:uuid(),
名称:'管理员'
}
}, {
包括:[{model:Types.UserRoles,as:'role'}]
});

在将关系定义为
as
选项时,您需要记住在执行查询时包含别名,以便快速加载这些关系,因此您需要更改
创建()
,并在
包含
中添加
as
选项:

Users.create({
uid:uuid(),
登录:'登录',
密码:“password”,
角色:{
uid:uuid(),
名称:'管理员'
}
}, {
包括:[{model:Types.UserRoles,as:'role'}]
});

如果在代码中使用
sequelize.sync()
,则表
用户将添加列
UserRolesId

如果不使用sequelize.sync()
,则需要将字段“roleId”添加到表“users”中,然后描述如下关系

Users.belongsTo(用户角色{
外键:“roleId”,
约束:false,//是可选的
as:‘邮政’
});

阅读额外示例-

如果您在代码中使用
sequelize.sync()
,则用户将添加列
UserRolesId

如果不使用sequelize.sync()
,则需要将字段“roleId”添加到表“users”中,然后描述如下关系

Users.belongsTo(用户角色{
外键:“roleId”,
约束:false,//是可选的
as:‘邮政’
});

阅读额外示例-

谢谢,但我的问题与此无关谢谢,但我的问题与此无关
Users.belongsTo(UserRoles)