我有一个具有这种突变类型的服务器端架构
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
,但我真的不知道如何为客户端创建一个将复杂对象或数组作为变量的查询。
我是以一种完全奇怪的方式解决这个问题,还是我如何从阿波罗客户端向服务器发送“复杂”突变?