首页 文章

Sequelize和Graphql反向查找

提问于
浏览
0

我有两个型号:

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!
}

How would I findAll Rivers given a list of Fish ID's? 我不确定查询必须如何查找graphql和sequelize?

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

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

1 回答

  • 1

    您可以为包含的每个模型指定 WHERE 子句 . 此外,这样做会将预期加载转换为内部联接(这是您想要的),除非您明确将 required 参数设置为 false .

    这意味着你应该能够做到这样的事情:

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

相关问题