zoukankan      html  css  js  c++  java
  • [GraphQL] Use Arguments in a GraphQL Query

    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
      }
    }
  • 相关阅读:
    PIE SDK 基于Dot net bar实现比例尺控件
    PIE SDK 监督分类对话框类(SupervisedClassificaitonDialog)使用经验
    图层树右键菜单结合Command操作过程
    PIE 插件式开发小笔记__PIESDK学习体会
    [转]sqlserver收缩文件没效果的解决办法
    efcore 输出显示sql语句
    Linux 常见的进程调度算法
    Linux 配置 vimrc
    排序 选择排序&&堆排序
    C/C++ 内存管理 (《高质量C++》-- 整理笔记)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6239012.html
Copyright © 2011-2022 走看看