0
1つ以上のキーワードに関連付けられたデータベースからすべての記事を返すことを検討していますが、これについて正しい方法があるとは思いませんか?Sequelize:関連キーワードに基づいて検索を実装する方法は?
私はSequelize 3.xとnode.js 3.7.0を使用しています。次ので
データモデルはなります。私が試した
const Article = sequelize.define('article', {
...
}
const Keyword = sequelize.define('keyword', {
name: Sequelize.STRING,
lang: Sequelize.STRING
}
const ArticleKeyword = sequelize.define('article_keyword', {
articleId: Sequelize.INTEGER,
keywordId: Sequelize.INTEGER
}
(Article).belongsToMany(
Keyword, { through: ArticleKeyword, as: 'keyword' });
(Keyword).belongsToMany(
Article { through: ArticleKeyword, as: 'article' });
次にクエリ:
var keywordFilter;
if (req.body.keywords) {
var keywords = req.body.keywords);
if (typeof keywords === 'string') {
keywords = keywords.split(/ *, */);
}
keywordFilter = { name: { $in: keywords } };
}
Article.findAll({
where: {
deleted: false
},
include: [{
model: Keyword,
as: 'keywords',
where: keywordFilter,
attributes: ['name'],
through: {
attributes: []
}
}]
}).then(function(articles) {
...
});
私はここに見つける午前の問題は、それが返され、一致するキーワードを持つだけで記事を選択するのではなく、ありますすべての記事を検索し、その結果のクエリで指定されたキーワードを選択するだけです。
誰もがこれについて正しい方向を示唆することはできますか?
動作しません。同じ振る舞い –
うーん。実際のSQLクエリとクエリを貼り付けることができますか? –