如何在不查询数据库中元素的情况下获取子字段的ID。
我目前的方法是查询子领域项目
query GetUser($id: ID!) {
getUser(id: $id){
id
project{
id
}
}
}
我需要这样的解决方案:
query GetUser($id: ID!) {
getUser(id: $id){
id
project
}
}
所以我不必查询子字段。
假设您现在有逻辑
function resolveProject(user, args, context) {
return loadProject(user.project_id);
}
这就是你问的原因。查询确实需要是
project {
id
}
所以你不能更改它,但你可以更改查询函数,只在使用id
以外的属性时才延迟加载项目,例如
function resolveProject(user, args, context) {
let promise;
function getProject() {
// you can always skip the caching logic if `loadProject`
// uses a DataLoader or something like it.
if (!promise) {
promise = loadProject(user.project_id);
}
return promise;
}
return {
id: user.project_id,
someProp: async () => (await getProject()).someProp,
otherProp: async () => (await getProject()).otherProp,
};
}
有了这样的解析器,
project {
id
}
与访问user.project_id
相同,并且不为项目本身查询数据库。