Express js: Sequlize Owsto возвращает пустые результаты - PullRequest
0 голосов
/ 27 октября 2019

У меня есть две модели

Распределение мест

module.exports = (sequelize, DataTypes) => {
  const SeatAllocation = sequelize.define('SeatAllocation', {
    id:{
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV1,
        primaryKey: true
    },   
    course_id: {
      type:DataTypes.UUID,
      allowNull:false,
      references: {
        model: 'Courses', 
        key: 'id', 
     }
    },
    number_of_seats:{
      type:DataTypes.INTEGER,
      allowNull:false
    },
    allocation_date:{
        type:DataTypes.STRING,
        allowNull:false
    }
  },{
    timestamps: false
  }
  );

  SeatAllocation.associate = function (models) {
    models.SeatAllocation.belongsTo(models.Course, {
      onDelete: "CASCADE",  
      foreignKey:'course_id',
      targetKey:'id',
      as:'Courses'
    });
  };

  return SeatAllocation;
};

Курс

module.exports = (sequelize, DataTypes) => {
  const Course = sequelize.define('Course', {
    id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV1,
        primaryKey: true
    },   
    name: {
      type:DataTypes.STRING,
      allowNull:false
    },
    created_at:{
      type:DataTypes.STRING,
      allowNull:false
    },
    updated_at:{
      type:DataTypes.STRING,
      allowNull:false
    }

  },{
    timestamps: false
  }
  );

  Course.associate = function(models) {
    models.Course.hasMany(models.SeatAllocation,{
      foreignKey:'course_id',
      as:'Courses'
    });
  };


  return Course;
};

Я пытаюсьполучить все значения из таблицы распределения мест вместе с подробностями курса, вот запрос, который я пробовал до сих пор

await models.SeatAllocation.findAll({
            include:[{
                model:models.Course,
                as:'Courses',
                all:true,
                required:true
            }]
        });

Я получаю результаты, однако объект courses отсутствует в результате

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

Сделайте обе ассоциации таким образом, удалив модели. Курс использует Курс, вместо этого работал для меня

Course.associate = function(models) {
    Course.hasMany(models.SeatAllocation,{
      foreignKey:'course_id',
      as:'Courses'
    });
  };
0 голосов
/ 29 октября 2019

Один возможный недосмотр в SeatAllocation - что случилось с models.Task? Разве вы не хотите ассоциировать SeatAllocation с Course? Как выглядит сгенерированный SQL?

  SeatAllocation.associate = function (models) {
    models.Task.belongsTo(models.Course, {   
      onDelete: "CASCADE",
...