gpt4 book ai didi

javascript - 使用 apollo 改变数组

转载 作者:行者123 更新时间:2023-12-02 22:58:53 25 4
gpt4 key购买 nike

我有一个具有此突变类型的服务器端架构

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,但我无法真正弄清楚如何为客户端创建将复杂对象或数组作为变量的查询。

我是否会以一种完全奇怪的方式来解决这个问题,或者我如何从 apollo 客户端向服务器发送“复杂”突变?

最佳答案

除了客户端之外,您还需要修复传入的 variables 对象。您在操作中定义的变量名为 settings,但您仅传递名为repository的变量。此外,此变量的形状与架构中所示的 SettingsInput 不匹配。 变量应该看起来像:

const variables = {
settings: {
repositories: [
{
name: 'name1',
url: 'url1'
},
{
name: 'name2',
url: 'url2'
},
],
},
}

关于javascript - 使用 apollo 改变数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57859253/

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