У меня проблемы с ассоциированием 2 моделей. Я постараюсь описать проблему как можно более подробно и надеюсь, что вы мне поможете.
У меня есть 2 модели: Zone и PLZ (обе также являются таблицами в database-mysql).
В одной зоне может быть много PLZ, и одна PLZ может принадлежать одной зоне.
При сохранении зоны с ее PLZ у меня есть таблица с именем zone_plz, содержащая только два столбца: zone_id и plz_id. Оба имеют внешние ключи для Zone.id и PLZ.id
Зональная модель:
const Sequelize = require('sequelize');
const sequelize = require('../util/database');
const PLZ = require('../models/PLZ');
const zone_plz = require('../models/relations/zone_plzs');
const Zone = sequelize.define('zone', {
name: {
type: Sequelize.STRING,
allowNull: false
},
color: {
type: Sequelize.STRING,
allowNull: false
}
}, {
timestamps: true
});
module.exports = Zone;
Модель PLZ:
const Sequelize = require('sequelize');
const sequelize = require('../util/database');
const Zone = require('../models/Zone');
const zone_plz = require('../models/relations/zone_plzs');
const PLZ = sequelize.define('plz', {
plz: {
type: Sequelize.INTEGER,
allowNull: false
},
city: {
type: Sequelize.STRING,
allowNull: false
},
district: {
type: Sequelize.STRING
}
});
module.exports = PLZ;
и это модель zone_plz:
const Sequelize = require('sequelize');
const sequelize = require('../../util/database');
const PLZ = require('../../models/PLZ');
const Zone = require('../../models/Zone');
const zone_plz = sequelize.define('zone_plz', {
zone_id: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: Zone,
key: 'id',
}
},
plz_id: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: PLZ,
key: 'id',
}
}
}, {
timestamps: true
});
module.exports = zone_plz;
и вот как я его запрашиваю:
router.get('/', function (req, res, next) {
zone_plz.findAll({
include: [{
model: PLZ,
as: 'plz'
},
{
model: Zone,
as: 'zone'
}]
}).then((result) => {
res.send({status: true, data: result})
}).catch(function (err) {
next(err)
})
});
Как видите, я хочу вернуть пользователю зону со всеми принадлежащими ей плз.
Я новичок в продолжении, и я также не уверен, что это правильный подход. Я получаю сообщение об ошибке: plz не связан с zone_plz!
Кто-нибудь может мне помочь?