【问题标题】:Sequelize - One to Many - One to Many续集 - 一对多 - 一对多
【发布时间】:2020-11-27 05:18:14
【问题描述】:

有兴趣创建新的 Feed 类型应用。我在概念化续集中的一对多关系时遇到了麻烦。最终,我正在使用 News Api。

用户会访问该网站,选择许多不同类别的新内容(例如体育、科技)。该类别因此有许多相关的文章。应用程序应该为每个用户返回一个文章提要。

从概念上讲,该模型是一个用户对多个类别,以及一个类别对多个文章。我不确定如何在 sequelize (node.js.) 中映射此模式。想法?

【问题讨论】:

  • 提供模型定义会更好

标签: node.js sequelize.js


【解决方案1】:

没有模型定义,我只能展示关联定义的基本概念。

User.hasMany(Category)
Category.hasMany(Article)
Category.belongsTo(User)
Article.belongsTo(Category)

所以获取与某个用户相关的所有文章可以是这样的:

// let's assume a user is stored in `user` var
const articles = await Article.findAll({
  include: [{
    required: true,
    model: Category,
    where: {
      userId: user.id
    }
  }]
});

【讨论】:

  • 我相信我明白,我是 SO 新手,所以不熟悉如何包含模型代码。这是您的想法,但要保持简单...用户模型(全名 STRING)、类别(类别 STRING)和文章(标题 STRING、网址 STRING)。
  • 我想设置一个路由,根据用户的类别选择获取与用户关联的所有文章。我相信你的方法会奏效。只是有点不确定,它是如何工作的。
  • 首先请在此处阅读如何定义模型sequelize.org/master/manual/model-basics.html#model-definition
  • 是的,我的模型设置正确。这是我在使用“包含”时难以理解的关联。我猜这里的关键是 include 属性中的 'where' 属性。
  • 没错。您只需要将where 选项放在您希望在某个模型上添加条件的位置。
猜你喜欢
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 2014-03-24
  • 2019-05-20
  • 1970-01-01
  • 2015-05-16
相关资源
最近更新 更多