Я использую Sequelize.js для отправки запросов в базу данных.У меня есть отношение многие ко многим между двумя таблицами, и я создал третью соединительную таблицу.Вот мои три стола.polit_in_article - это таблица соединений.
politician.js:
module.exports = (sequelize, DataTypes) => {
const Politician = sequelize.define('politician', {
...
});
Politician.associate = (models) => {
Politician.hasMany(models.Polit_in_article, {
foreignKey: 'politicianId',
as: 'polit_in_articles',
});
};
return Politician;
};
article.js:
module.exports = (sequelize, DataTypes) => {
const Article = sequelize.define('article', {
...
});
Article.associate = (models) => {
Article.hasMany(models.Politician, {
foreignKey: 'articleId',
as: 'polit_in_articles'
});
};
return Article;
};
polit_in_article.js:
module.exports = (sequelize, DataTypes) => {
const Polit_in_article = sequelize.define('polit_in_article', {
times_mentioned: DataTypes.INTEGER,
});
Polit_in_article.associate = (models) => {
Polit_in_article.belongsTo(models.Article, {
// foreignKey: 'articleId',
as: 'articles',
});
Polit_in_article.belongsTo(models.Politician, {
// foreignKey: 'politicianId',
as: 'politicians',
});
};
return Polit_in_article;
};
А вот мой контроллер (не уверен, что это правильный способ вызова):
const Sequelize = require('sequelize');
const Article = require('../models').Article;
const Politician = require('../models').Politician;
const Polit_in_article = require('../models').Polit_in_article;
const Op = Sequelize.Op;
module.exports = {
getAllArticlesOfPolitician(req) {
return Article
.findAll({
include: [{
model: Polit_in_article,
include: [{
model: Politician,
where: {
lastname: req.query.politicianLastName,
}
}],
}],
}).then(response => response)
// .catch(err => err);
}
};
, и с этим я получаю ошибку SequelizeEagerLoadingError: polit_in_article is not associated to article
.Возможно, я что-то пропустил, но я действительно не знаю, что здесь делать.Я попытался сделать таблицу статей для связи as: 'polit_in_articles'
, которая работала до тех пор, пока мне не нужно было включить в запрос табели политиков.