如何在 GRAPHQL 中设置默认值

How to set a default value in GRAPHQL

我想在角色 属性 中设置一个默认值,但我不知道该怎么做。 这个想法是角色 属性 默认情况下对所有用户都是“BASIC”。 我用快递。

对不起我的英语,我不是本地人,这是代码:

 const UserType = new GraphQLObjectType({

name: "User",
description: "User type",
fields: () => ({
id: { type: GraphQLID },
username: { type: GraphQLString },
email: { type: GraphQLString },
displayName: { type: GraphQLString },
phone: { type: GraphQLString },
role: { type:  GraphQLString}

}
),

});

谢谢!

这已经在

上得到回答

和官方文档https://graphql.org/graphql-js/type/#example-5

请检查这些内容。

这是通过 默认值 属性 完成的。但这对于您显示的 GraphQLObjectType 是不可能的。

const UserType = new GraphQLObjectType({
  name: 'User',
  description: 'User type',
  fields: () => ({
    id: { type: GraphQLID },
    username: { type: GraphQLString, defaultValue: 'default string' },
  }),
});

Object literal may only specify known properties, and 'defaultValue' does not exist in type 'GraphQLFieldConfig<any, any, { [argName: string]: any; }>'

因此 GraphQLObjectType 没有默认值 属性。

您需要在其他地方解决这个问题,而不是在这里。比如在使用数据的时候,如果你想要的值为空,那么可以使用default代替。

...
...
data.username ?? 'default string'
...
...

但是这个 defaultValue 属性 在哪里工作?它适用于 GraphQLInputObjectType.

例如:

  const filter = new GraphQLInputObjectType({
    name: "Filter",
    fields: () => ({
      min: { type: new GraphQLNonNull(graphql.GraphQLInt) },
      max: { type: graphql.GraphQLBoolean, defaultValue: 100 },
    }),
  });

我们可以这样使用它:

  ...
  query: {
    products: {
      type: new GraphQLList(productTypes),
      args: { filter: { type: new GraphQLNonNull(filter) } }, // <-----
      resolve: allProducts,
    },
  },
  ...