续集简单查询不能提供普通对象

时间:2018-02-24 14:23:16

标签: sequelize.js

我只是从续集开始而不是严格判断。 我有几个型号: 预订工作量

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,但是不知道如何在一个表中使用它两次,因为很多语法错误。 此外,我还有一个想法是另外两个查询来从类型表中获取相应的名称,但我感觉这是一个愚蠢的想法。 很抱歉这个荒谬的问题,我搜索了很多时间进行类似的查询但是找不到,我不得不在这里提出这个问题。感谢。

1 个答案:

答案 0 :(得分:0)

使用attributes仅提取名称列。然后,您可以使用.访问该值。对于多个include,语法如下。

...

include : [
{model : model1},
{model : model2}
],