Я пишу мутацию для схемы GraphQL:
const Schema = new GraphQLSchema({
mutation: new GraphQLObjectType({
name: 'Mutation',
fields: () => ({
person: {
type: GraphQLString,
args: {
name: {type: GraphQLString},
school: {type: GraphQLString},
},
resolve: mutatePerson,
},
}),
}),
});
Я хочу убедиться, что mutatePerson будет работать только при наличии аргументов name и school. Как я могу это проверить?


Оболочка типа GraphQLNonNull используется для указания ненулевых полей и аргументов. Для полей это означает, что значение поля в результатах запроса не может быть нулевым. Для аргументов это означает, что аргумент не может быть исключен или иметь значение null. Итак, ваш код просто должен выглядеть примерно так:
args: {
name: {
type: new GraphQLNonNull(GraphQLString),
},
school: {
type: new GraphQLNonNull(GraphQLString),
},
},
Разве это не то поведение, которое вы пытались реализовать? Если нет, поясните в своем вопросе, какое именно поведение вы пытаетесь реализовать.
Я бы хотел, чтобы клиенту был отправлен ответ об ошибке, а не просто сообщение об ошибке, распечатанное на консоли на стороне сервера.
Эта ошибка будет возвращена клиенту как часть массива errors в ответе. Если вы этого не видите, нам нужно увидеть больше вашего серверного кода и знать, какой ответ получает клиент является при выполнении запроса.
Ах, это была проблема с моей обработкой ошибок. Спасибо!
лучше сделать это следующим образом (в модели), если вы хотите отклонить пустые строки, такие как "", он отличается от 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);
Когда я делаю это, а затем опускаю аргумент
name, я получаю исключениеField "person" argument "name" of type "String!" is required but not provided