このミューテーションタイプのサーバー側スキーマがあります
type Mutation {
updateSettings(settings: SettingsInput): Settings
}
input SettingsInput {
repositories: [RepositoryInput]
}
input RepositoryInput {
id: String
name: String
url: String
}
Altair などのクライアントを使用している場合は、次のクエリを使用して、必要に応じてこれを変更できます。
mutation{
updateSettings(settings: {
repositories: [
{
name: "name1"
url: "url1"
},
{
name: "name2"
url: "url2"
}
]
}){
repositories {
id
name
url
}
}
}
ただし、Apollo を使用しているときに動作させるのに苦労しています
私が得ることができる最高のものはこれです
import { SubscriptionClient } from "subscriptions-transport-ws";
import { gql } from "apollo-boost";
import { WebSocketLink } from "apollo-link-ws";
const wsClient = new SubscriptionClient("ws://localhost:5001/graphql", {
reconnect: true
});
const client = new WebSocketLink(wsClient);
const UPDATE_SETTINGS = gql`
mutation UpdateSettings($settings: SettingsInput) {
updateSettings(settings: $settings) {
repositories {
id
name
url
}
}
}
`;
client
.request({
query: UPDATE_SETTINGS,
variables: { repository: [{name: "name1", url:"url1"},
{name: "name2", url:"url2"}]}
})
私は明らかに何かが欠けています。クライアントはサーバーを認識していないようですが、SettingsInput
複雑なオブジェクトまたは配列を変数として受け取るクライアントのクエリを作成する方法がわかりません。
私はこれをまったく奇妙な方法で行っていますか、それとも「複雑な」突然変異をアポロクライアントからサーバーに送信するにはどうすればよいですか?