如何在Sequelize中查询多对多关系?

时间:2018-09-28 04:31:45

标签: mysql node.js postgresql orm sequelize.js

嗨,我正在使用sequelize作为我的ORM。这是我的架构:

Users: id,name
Tags: id,tagName
UserTags: id,userId,tagId

用户和标签之间存在多对多关系。一个用户有很多标签,而一个标签有很多用户,并且这种关系存储在userTags中。

我在User和Tag模型中建立了关联:

User.associate = models => {
    User.belongsToMany(models.Tag, { through: 'UserTags'} );
};

Tag.associate = models => {
   Tag.belongsToMany(models.User, {through: 'UserTags'});
};

我能够通过以下方式获取与用户相关联的所有标签:

models.User.findAll({
    include: [
        {
          model: models.Tag,
        }
    ]}).then(function(result) {
        res.send(result)
    })  

我希望能够查询UserTags表并将每个标签的ID映射到其名称。我想要这样做的原因是因为我希望能够计算标签在所有用户中出现的次数。我该怎么办?

我尝试做:

models.UserTag.findAll({
    include: [
        {
          model: models.Tag,
        }
    ]}).then(function(result) {
        res.send(result)
    })  

但是sequelize表示两者之间没有关联。

0 个答案:

没有答案