включить, включить две соединенные таблицы - PullRequest
0 голосов
/ 30 января 2019

У меня есть 2 модели Assignment и Area в каждой из них в отдельном файле, например:

./models
--Area.js
--Assignment.js
--index.js

Area.js:


    const Area = sequelize.define('area',{
        id: {
            type: Sequelize.INTEGER,
            autoIncrement: true,
            primaryKey: true
        },
        name: {
            type: Sequelize.STRING,
        }
        }, {
            timestamps: false
        });
     Area.hasMany(Assignment, { foreignKey:'areaId'});

Assignment.js:


    const Assignment = sequelize.define('assignment',{
        id: {
          type: Sequelize.INTEGER,
          autoIncrement: true,
          primaryKey: true,
        }
      }, {
        timestamps: false
      });
    Assignment.associate = models => {
        models.Assignment.belongsTo(models.Area, {
            foreignKey: 'areaId',
            onDelete: "CASCADE",
        });
    };

Когда я пытаюсь найти некоторые назначения с информацией об областях (объединение) со свойством Включить , я получаю сообщение об ошибке, в котором говорится: область не связана с назначением!


    Assignment.findAll({
            include: [{ model: Area }]
        }).then((assignments) => {
            res.status(200).json(assignments)
        }).catch((e) => {
            res.status(500).json({ error: e.message })
        })

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Мне кажется, что вам не хватает метода связывания:

Area.associate = models => {
    models.Area.hasMany(Assignment, { foreignKey:'areaId'})
};

и столбец areaId должен быть в вашем Assignment.js тоже

0 голосов
/ 30 января 2019
Area.hasMany(Assignment, { foreignKey:'areaId'});

Таким образом, столбец areaId должен быть в вашем Assignment.js.Но вы не можете видеть это в вашей Assignment модели.

models.Assignment.belongsTo(models.Area, {
            foreignKey: 'areaId',
            onDelete: "CASCADE",
        });

Также это верно, только если у вас есть столбец с названием areaId в вашем Assignment.js

В заключение вы пропуститеareaId столбец в модели Assignment.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...