我必须对 DistrictArea 和 Order 进行建模,其中Order必须具有DistrictArea实例。 所以到目前为止,我已经做到了:
Order.hasOne(models.DistricArea)
在迁移文件中,我使用了它。
queryInterface.addColumn('Orders', 'district_area_id', {
type: Sequelize.INTEGER,
references: {
model: 'DistricAreas',
key: 'id'
}
})
,我有两个问题。如果我们在模型中使用关联的方法,我们必须为我们的模型显式定义这些字段吗?
district_area_id: DataTypes.INTEGER
我是否需要在另一个模型(DistricArea)中定义 belongsTo ?
第二个问题是我没有在 DistricArea 中定义与订单相关的任何字段。但是当我想使用查询DistricArea.findAll()时,会出现以下错误:
“列“ OrderId”不存在”
所以这是我要实现的目标:
我需要告诉我们有很多订单,每个订单都有一个 DistricArea。
答案 0 :(得分:0)
是的,您仍然需要在模型中定义字段
对于订单模型应为 belongsTo ,而不是 hasOne ,在DistricArea模型中为 hasMany ,然后使用 district_area_id 字段定义您的sourceKey。
Order.belongsTo(models.DistricArea,{foreignKey: 'district_area_id'})
DistricArea.hasMany(models.Order, {foreignKey: 'district_area_id', sourceKey: 'id'})
在此之后,您将在DistricArea.findAll()中获得所有DistricArea,然后在其中将拥有一个Order数组,其中包含每个DistricArea的每个订单,或者在Order.findAll()调用中,您将看到所有带有字段district_area_id