具有必需参数的 GraphQL 突变器

GraphQL mutator with required args

我正在为 GraphQL 模式编写一个变更:

const Schema = new GraphQLSchema({
  mutation: new GraphQLObjectType({
    name: 'Mutation',
    fields: () => ({
      person: {
        type: GraphQLString,
        args: {
          name: {type: GraphQLString},
          school: {type: GraphQLString},
        },
        resolve: mutatePerson,
      },
    }),
  }),
});

我想确保 mutatePerson 仅在同时存在 nameschool 参数时才有效。我该如何检查?

GraphQLNonNull 类型包装器用于将字段和参数指定为非空。对于字段,就是查询结果中字段的值不能为空。对于参数,这意味着参数不能被遗漏或具有 null 值。所以你的代码只需要看起来更像这样:

args: {
  name: {
    type: new GraphQLNonNull(GraphQLString),
  },
  school: {
    type: new GraphQLNonNull(GraphQLString),
  },
},

如果你想拒绝像“”这样的空字符串,最好按照下面(在模型中)来做,它不同于Null,这样你可以拒绝Null和空“”。

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const buinessSchema = new Schema({
  name: { type: String, required: true, unique: true },
  address: { type: String, required: true },
  phone: { type: String, required: true },
  email: { type: String, required: true },
  website: { type: String, required: true },
  currency: { type: String, required: true },
  aboutus: { type: String, required: true },
  terms: String,
  slogan: String,
  logo: { type: String, required: true }
});

module.exports = mongoose.model("Buiness", buinessSchema);