是否可以将动态类型的数据发送到GraphQL,或者修改现有模式?

是否可以将动态类型的数据发送到GraphQL,或者修改现有模式?,graphql,react-apollo,graphql-js,keystonejs,Graphql,React Apollo,Graphql Js,Keystonejs,我正在使用KeystoneJS的自定义字段来构建一个下拉列表,该下拉列表由API中的数据填充。构建自定义字段可以很好地工作,但是当我尝试将数据保存到服务器时,也就是说,当我让KeystoneJS通过其graphqlapi将数据保存到服务器时,我得到了 [GraphQL error]: Message: Variable "$data" got invalid value "another" at "data.sploof"; Expected type TodoSploofType., Loca

我正在使用KeystoneJS的自定义字段来构建一个下拉列表,该下拉列表由API中的数据填充。构建自定义字段可以很好地工作,但是当我尝试将数据保存到服务器时,也就是说,当我让KeystoneJS通过其graphqlapi将数据保存到服务器时,我得到了

[GraphQL error]: Message: Variable "$data" got invalid value "another" at "data.sploof"; Expected type TodoSploofType., Location: [object Object], Path: undefined
我对GraphQL相当陌生,但我相信问题在于我传递的数据(另一个字段sploof)不在模式中。

相反,它有挂起和处理,这是在我设置KeystoneJS时产生的-在这里您可以看到sploof字段具有自定义类型MySelect,其中schemaDoc包含选项:


一般来说,有没有一种方法可以在创建GraphQL模式后修改它们?也就是说,如果我想发送其形状将在运行时确定的数据?

Keystone Select为已定义类型,则不能为此发送动态值

如果要将新项添加到字段中,可以创建关系类型字段并随机添加新项,但由于只存储ref objedct的mongo id,因此可能无法始终正常工作

我看到您正在编写一个自定义字段,如果您可以让自定义字段从列表中加载数据,并让用户选择base type is still Text,这样您就可以在那里使用动态选项。您还可以创建自定义字段,以列出同一列表中字段的值。基于现有值的类型预发


创建一个工作代码可能需要时间。

我认为,以动态方式发送Graphql模式是不可能的。也许你可以发送json并将模式设置为字符串。最后请检查一下,我使用了一个纯关系字段,它非常有效-也就是说,如果我想将一篇“文章”与其他文章关联起来,也就是说,翻译那篇文章,然后我在文章列表翻译中有一个Relationship字段:{type:Relationship,ref:'Article',many:true}。我不清楚您的意思是什么,但由于只存储ref-objedct的mongo id,所以可能无法一直正常工作。看来这应该行得通,毕竟,这是关系领域的重点,不是吗?我所做的不起作用有什么原因吗?你做得对,我的客户告诉我他们不想存储关系id字段,它是扩展的选择字段,其中值来自不同的列表,没有关系。
keystone.createList('Todo', {
    schemaDoc: 'A list of things which need to be done',
    fields: {
        name: {type: Text, schemaDoc: 'This is the thing you need to do'},
        blip: {type: Text, schemaDoc: 'This is another thing'},
        status: {type: Select, options: 'pending, processed'},
        sploof: {type: MySelect, options: 'pending, processed'},

    },
});