【发布时间】:2018-10-15 20:22:23
【问题描述】:
我使用 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',直到我需要将政治家表也包括到查询中。
【问题讨论】:
标签: javascript node.js express sequelize.js