您的位置:首页 > 产品设计 > UI/UE

[GraphQL] Use Arguments in a GraphQL Query

2016-12-31 12:11 351 查看
In GraphQL, every field and nested object is able to take in arguments of varying types in order to do common operations like fetching an object by it's ID, filtering, sorting, and more. In this video, we'll update a field to take in an id argument and then learn how to use that argument in our resolve method to fetch a video by its id.

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,
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: 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`)
})


data:

const videoA = {
id: 'a',
title: 'Create a GraphQL Schema',
duration: 120,
watched: true,
};
const videoB = {
id: 'b',
title: 'Ember.js CLI',
duration: 240,
watched: false,
};
const videos = [videoA, videoB];
const getVideoById = (id) => new Promise((resolve) => {
const [video] = videos.filter((video) => {
return video.id === id;
});

resolve(video);
});

exports.getVideoById = getVideoById;


In the web interface, enter the query:

{
video (id: "b"){
id
title
duration
watched
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: