我只是从续集开始而不是严格判断。 我有几个型号: 预订工作量
export function initAmountOfWork(sequelize: Seq) {
return sequelize.define('amount_of_work', {
booking_id: {
type: Sequelize.INTEGER,
primaryKey: true
},
room_type_id: {
type: Sequelize.SMALLINT,
primaryKey: true
},
cleaning_type_id: {
type: Sequelize.SMALLINT,
primaryKey: true
},
amount: Sequelize.SMALLINT,
}, {
timestamps: false,
freezeTableName: true,
underscored: false
});}
roomtypes
export function initRoomTypes(sequelize: Seq) {
return sequelize.define('room_types', {
id: {
type: Sequelize.SMALLINT,
primaryKey: true
},
room_type: Sequelize.STRING,
}, {
timestamps: false,
freezeTableName: true
});}
以及类似的清洁类型。 我也有这种关联
AmountOfWorkModel.hasOne(RoomTypesModel, { foreignKey: 'id' })
RoomTypesModel.hasOne(AmountOfWorkModel, { foreignKey: 'room_type_id' })
AmountOfWorkModel.hasOne(CleaningTypesModel, { foreignKey: 'id' })
CleaningTypesModel.hasOne(AmountOfWorkModel, { foreignKey: 'cleaning_type_id' })
我可以进行如下查询:
function getAllWorksByBookingId(bookingId: number) {
return AmountOfWorkModel.findOne({
where: {
booking_id: bookingId,
},
raw: true
})
我得到的结果如
{
"booking_id": 23,
"room_type_id": 2,
"cleaning_type_id": 7,
"amount": 1
}
问题是如何形成一个查询,该查询生成带有来自" roomtypes"的字母类型的对象。和#34;清洁类型"与我的工作量相关的表格#34;工作量"。像:
{
"booking_id": 23,
"room_type_id": "big room",
"cleaning_type_id": "standart cleaning",
"amount": 1
}
我也试过使用include,但是不知道如何在一个表中使用它两次,因为很多语法错误。 此外,我还有一个想法是另外两个查询来从类型表中获取相应的名称,但我感觉这是一个愚蠢的想法。 很抱歉这个荒谬的问题,我搜索了很多时间进行类似的查询但是找不到,我不得不在这里提出这个问题。感谢。
答案 0 :(得分:0)
使用attributes
仅提取名称列。然后,您可以使用.
访问该值。对于多个include,语法如下。
...
include : [
{model : model1},
{model : model2}
],