0
我期待從數據庫中返回與一個或多個關鍵字相關的所有文章,但我不確定是否有正確的方法去解決這個問題?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查詢和你想要的查詢, –