現在のところ、直接的な方法はありませんが、回避策がありますが、突然変異に応じてアイテム全体を取得しても構いません。
アイテムの属性の可変数を更新する場合は、属性のリストと値のリストをとる突然変異(サーバー側)を記述することができます。
// Using `graphql-relay` library's helper function `mutationWithClientMutationId`.
const UpdateItemMutation = mutationWithClientMutationId({
name: 'UpdateItem',
inputFields: {
itemId: { type: new GraphQLNonNull(GraphQLID) }
properties: { type: new GraphQLList(GraphQLString) },
values: { type: new GraphQLList(GraphQLString) },
},
outputFields: {
item: {
type: ItemType,
resolve: (item) => item,
},
},
mutateAndGetPayload: ({itemId, properties, values, ...args}) => {
// Iterate over the properties and values.
// Update the item with itemId.
return item;
},
});
クライアント側の変異は、以下のようにして起動します:クライアント側の突然変異で楽観的な更新について
Relay.Store.commitUpdate(new UpdateItemMutation({
item: this.props.item,
properties: ['prop1', 'prop2'],
values: ['value1', 'value2'],
}));
は、あなたがproperties
とvalues
すなわち、更新された属性からの戻り値を作ることができますその値。
私の知る限りでは、フィールドクエリを条件付きでフィールドに含めることは現時点ではリレーではサポートされていません。 Relayコンテナとは異なり、fatクエリでは変数を使用できません。 current efforts by Relay contributorsを見ると、突然変異のAPIはもっと強力で、近い将来に合理化されると私は信じている。
あなたの突然変異コードとあなたが得ているエラーを投稿できますか? – Chris