gpt4 book ai didi

graphql - 如何在graphQl/Sequelize 中对嵌套查询应用where 子句?

转载 作者:行者123 更新时间:2023-12-03 22:20:33 25 4
gpt4 key购买 nike

我有以下带有嵌套结构的菜单模型:

const typeDefs = gql`

type Menu{
id:Int
label: String
children: [Menu]
icon: String
table: String
}

该模型解析如下:
const resolvers = {

Query: {
nodes: async (_, args,context) =>{
try{

const menu=await Menu.findAll({ where: args});
return menu;
} catch(error){
console.error("ERROR");
return {};
}
},

Menu: {
children: async(menu) => {
const getM=await menu.getMenus();
return getM;
},
},

它按要求工作,直到我需要对菜单访问应用一些限制。
让我们考虑一下我想限制对 Menu id #5 的访问。以下内容适用于第一级,但不适用于 child 。
const menu=await Menu.findAll({ where: {...args,[Op.not]:{id:5}}});
我知道 getMenus() 是由 Sequelize 直接执行的,无需调用解析器,但是如何为 child 应用“where 子句”或如何让 getMenus() 考虑“where 子句”的约束?

最佳答案

您需要使用 include 来包含 child (菜单)并添加 where 子句。像这样:

const result: ParentEntity = await ParentEntity.schema(tenant).findAll<ParentEntity>({
include: [{
model: ChildEntity.schema(tenant),
where: yourConditionOnTheChildEntity
}]
});

关于graphql - 如何在graphQl/Sequelize 中对嵌套查询应用where 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67668851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com