Sequelize 和 Graphql 反向查找

Posted

技术标签:

【中文标题】Sequelize 和 Graphql 反向查找【英文标题】:Sequelize and Graphql reverse lookup 【发布时间】:2018-11-28 18:35:44 【问题描述】:

我有两个模型:

River.associate = models => 
  River.hasMany(models.Fish,  as: 'Fishes' );
;

Fish.associate = models => 
  Fish.belongsTo(models.River);
;

type River 
    id: ID!
    name: String!
    alternative: String!
    geojson: JSON
    fishes: [Fish]


type Fish 
  id: ID!
  name: String!

在给定 Fish ID 列表的情况下,我如何找到所有河流?我不确定查询必须如何为 graphql 和 sequelize 查找此内容?

type Query 
  river(id: ID!): River
  **rivers(fishIds: ARRAY): River ??????**
  fishes: [Fish]


Query: 
rivers: (_,  fishIds ) => 
      return River.findAll(
        where: 
          fishes: fishIds
        
      );
    ,

【问题讨论】:

【参考方案1】:

您可以为包含的每个模型指定WHERE 子句。此外,除非您将 required 参数显式设置为 false,否则这样做会将急切负载转换为内部连接(这是您想要的)。

这意味着您应该能够执行以下操作:

River.findAll( include:
  [
    
      model: Fish,
      where:  id: fishIds 
    ,
  ],
)

【讨论】:

这似乎有效,尽管我的关联不起作用,现在没有任何返回。 ***.com/questions/50935562/…

以上是关于Sequelize 和 Graphql 反向查找的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL 和 graphql-sequelize-schema-generator

是否可以使用 Graphql 和 Sequelize 进行多租户?

GraphQL 嵌套突变 + Sequelize

用 graphql-sequelize 解决“IS A”关系

GraphQL/Sequelize:SQL 别名

使用 Jest、Graphql 和 Sequelize 测试数据库时如何避免 EADDRINUSE