gpt4 book ai didi

node.js - Sequelize : M2M Filter entities that don't have a tag out

转载 作者:行者123 更新时间:2023-12-03 22:28:42 25 4
gpt4 key购买 nike

我的数据库中的标签和故事之间存在多对多关系。我想通过具有特定标签的故事过滤故事,但是我想在结果集中包含故事的所有标签。我该怎么办?

现在,我的查询只为每个故事返回一个标签(用作过滤器的标签)。我希望它包含给定故事的所有标签。

Relation

这是我当前的查询。

        models.Story.findAll({
attributes: ['id', 'title', 'description'],
include: [
{
attributes: ['name', 'description'],
model: models.Tag,
where: {
id: tag.id
},
order: [['useCount', 'desc']]
},
{
attributes: ['id', 'displayName'],
model: models.User,
where: {
id: models.sequelize.col('User.id')
}
}
]
})

最佳答案

假设您的关系建模为

models.users.hasMany(models.stories);

models.stories.belongsTo(models.users);
models.stories.belongsToMany(models.tags, {
through: 'story_tags'
});
models.stories.hasMany(models.story_tags);

models.tags.belongsToMany(models.stories, {
through: 'story_tags'
});
models.tags.hasMany(models.story_tags);

models.story_tags.belongsTo(models.stories);
models.story_tags.belongsTo(models.tags);

那么你可以这样做:
models.stories.findAll({
attributes: ['id', 'title', 'description'],
include: [{
model: models.tags,
attributes: ['id'],
where: {
id: tag.id
}
}, {
model: models.users,
attributes: ['id', 'displayName'],
where: {
id: {
$col: 'user.id'
}
}
}, {
model: models.story_tags,
attributes: ['id'],
include: [{
model: models.tags,
attributes: ['name', 'description']
}]
}]
}).then(stories => {
// The rest of your logics here...
});

关于node.js - Sequelize : M2M Filter entities that don't have a tag out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37355953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com