gpt4 book ai didi

relayjs - 共享中继节点接口(interface)

转载 作者:行者123 更新时间:2023-12-04 05:54:04 26 4
gpt4 key购买 nike

我想与多个 GraphQL 类型共享一个节点接口(interface)。当前出现此错误:

Error: User may only implement Interface types, it cannot implement: undefined.

我已经这样声明了接口(interface):

// file: node-interface.js
let {nodeInterface, nodeField} = nodeDefinitions(
(globalId) => {
let {type, id} = fromGlobalId(globalId);
if (type === 'UserModel') {;
return UserModel.findOne(id).exec();
}
return null;
},
(obj) => {
if (obj instanceof UserModel) {
return UserType;
}
return null;
}
);

export { nodeInterface };
export { nodeField };

and attempting to use it in my UserType like this

// file: user.js
import {
nodeInterface
} from ‘./node-interface';

let UserType = new GraphQLObjectType({
name: 'User',
description: 'A user',
fields: () => ({
id: globalIdField('User'),
username: {
type: GraphQLString,
},
}),
interfaces: [nodeInterface]
});

我错过了什么?我需要能够将多个 GraphQL 类型的声明分解为相应的文件并实现 nodeInterface...

最佳答案

有必要为任何物质的模式创建类型注册表。请参阅此处的示例:

Type Registry

然后像这样创建 nodeInterface 和 nodeField:

// ./src/schema/node.js
import { nodeDefinitions } from 'graphql-relay';

import { idFetcher, typeResolver } from './registry';

export const { nodeInterface, nodeField } = nodeDefinitions(
idFetcher, typeResolver
);

查看此问题以获取更多信息:Abstract type resolution

关于relayjs - 共享中继节点接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192065/

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