[GraphQL] Use GraphQLNonNull for Required Fields
While certain fields in a GraphQL Schema can be optional, there are some fields or arguments that are necessary in order to either fulfill a query, or to provide a guarantee to people using the Schema that some field exists. In this video, we'll take a look at turning an argument in a NonNull argument by applying the GraphQLNonNull type in order to guarantee that the given argument is supplied in the query.
const express = require('express'); const graphqlHttp = require('express-graphql'); const { getVideoById } = require('./data/index'); const server = express(); const port = process.env.PORT || 3000; const { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLInt, GraphQLNonNull, GraphQLBoolean, GraphQLID } = require('graphql'); const videoType = new GraphQLObjectType({ name: 'video', description: 'A video on Egghead.io', fields: { id: { type: GraphQLID, description: 'The id of the video' }, title: { type: GraphQLString, description: 'The title of the video' }, duration: { type: GraphQLInt, description: 'The duration of the video' }, watched: { type: GraphQLBoolean, description: 'Whether or no the viewer watched the video' } } }) const queryType = new GraphQLObjectType({ name: 'QueryType', description: 'The root query type', fields :{ video: { type: videoType, args: { id: { type : new GraphQLNonNull(GraphQLID), description: 'The id of the video' } }, resolve: (_, args) => getVideoById(args.id) } } }); const schema = new GraphQLSchema({ query: queryType }); server.use('/graphql', graphqlHttp({ schema, graphiql : true, // use graphiql interface })); server.listen(port, () => { console.log(`Listening on http`) })
If gave the query:
{
video{
id
title
duration
watched
}
}
Then will get the result as:
{ "errors": [ { "message": "Field \"video\" argument \"id\" of type \"ID!\" is required but not provided.", "locations": [ { "line": 2, "column": 3 } ] } ] }
Then if get id args will get result as normal:
{ video (id:"a"){ id title duration watched } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2015-12-31 [React] Extracting Private React Components