Sequelize:如何在hasMany中进行反向查询?

3

我有以下模型:

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

我将它们之间建立了如下关联:

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

在 Articles 表中添加了一个外键 'userId'。

现在我可以通过 User 模型查询时使用 eager load 加载文章,例如:

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

但是我该如何做反向操作,即:
Articles.findAll({ where: { id: 'user_one', includes: [{ model: Users }] }})

那么,您想要在这里找到特定用户发布的所有文章? - ionizer
当我检索文章列表时,我想要相关的用户详细信息。 - sam23
2个回答

5

以下是如何查询它的基本方法,与您的类似:

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

但是我有以下关于表关系的内容:

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

谢谢。添加belongsTo关系后它可以工作了。 - sam23

0

如果你要使用 include,就不要用 includes

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

在上面的代码中,idArticles 表中的主键。

这里有一个关于此的好讨论


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接