Relay MutationとglobalIdFieldのRefsがついています。サーバー側のリレー・ミューテーションで別のモデルへの参照を実装する方法は?
だから、小道具にポストIDを持っていると私は、次のスキーマで定義された変異を持っている必要があります、のは、そのコメントが親コメントIDを持つことができるとしましょう:
const createComment = mutationWithClientMutationId({
name: 'CreateComment',
description: 'Create comment of the post',
inputFields: {
content: {
type: new GraphQLNonNull(GraphQLString),
description: 'Content of the comment',
},
parent: {
type: GraphQLID,
description: 'Parent of the comment',
},
post: {
type: new GraphQLNonNull(GraphQLID),
description: 'Post of the comment',
},
},
outputFields: {
comment: { type: commentType, resolve: comment => comment },
},
mutateAndGetPayload: (input, context) => (context.user
? Comment.create(Object.assign(input, { author: context.user._id }))
: new Error('Only logged in user can create new comment')),
});
私のコメントがあまりにもglobalIdField、postTypeを持っています。私はクライアントからの突然変異を照会するときに、このオブジェクトの実際のmongo _idの代わりにどこでもglobalIdsを使用します。 「のでinputFieldsのフィールドができ、私はポストにglobalIdFieldを()を追加することができますが、リレーはこれを渡すことができない場合、それは非常にconvinientすることができ
mutateAndGetPayload: (input, context) => {
if (input.parent) input.parent = fromGlobalId(input.parent).id;
if (input.post) input.post = fromGlobalId(input.post).id;
// And other logic
}
:ここでそれのためのより良い方法の代わりにmutateAndGetPayloadで、この作品ですglobalIdFieldにはリゾルバ関数があります。