【问题标题】:Sequelize: How to reverse query in hasMany?Sequelize:如何在 hasMany 中反向查询?
【发布时间】:2018-04-02 14:39:37
【问题描述】:

我有以下型号:

const Users = sequelize.define('User', {/* ... */})
const Articles = sequelize.define('Articles', {/* ... */})

他们之间的关联如下:

Users.hasMany(Articles, { as: 'Post' })

在 Articles 表中添加一个 foreignKey 'userId'。

现在我可以在通过 User 模型查询时立即加载文章:

Users.findOne({ where: { id: 'user_one'}, includes: [{ model: Articles }] })

但是我该如何做相反的事情,即:

Articles.findAll({ where: { id: 'user_one', includes: [{ model: Users }] }})

【问题讨论】:

  • 那么,你要在这里找到某个用户的所有文章?
  • 没有。当我检索文章列表时,我想要关联的用户详细信息。

标签: sequelize.js


【解决方案1】:

这里基本上是如何查询它,它与你的类似:

Articles.findAll({
    where: { userID: 'user_one' },
    include: [{
        model: Users,
        required: true
    }]
})

但我的表关系有以下几点:

Users.hasMany(Articles, { foreignKey: 'userID' });
Articles.belongsTo(Users, { foreignKey: 'userID' });

【讨论】:

  • 谢谢。添加belongsTo关系后它起作用了
【解决方案2】:

只需使用 include 代替 includes

Articles.findAll({
    include: [{
        model: Users,
        where: { id: 'user_one' }
    }]
})

在上面,idArticles 表中的主键。

Here is a good discussion for that

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 2018-11-28
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    相关资源
    最近更新 更多