2017-12-26 33 views
0

node, express, mongoose 및 graphql을 사용하고 있습니다.GraphQL Schema.js 파일 오류 - Node/express

graphql 콘솔에서이 오류가 발생합니다. "message": "The type of SocialPostInQue.socialPost must be Output Type but got: undefined.\n\nThe type of SocialPostInQue.schedule must be Output Type but got: undefined.\n\nThe type of Mutation.addSocialPostInQue(socialPost:) must be Input Type but got: undefined.\n\nThe type of Mutation.addSocialPostInQue(schedule:) must be Input Type but got: undefined." 오류가 발생했습니다. Schema.js 파일의 유형으로 인해 원본이 잘못되었습니다.

쿼리 또는 돌연변이를 실행하지 않았기 때문에 undefined이 어디에서 오는지 알 수 없습니다. 내 코드에 문제가 있습니까?

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

const SocialPostInQueSchema = new Schema({ 
    userId: String, 
    socialPost: { 
     id: String, 
     message: String, 
     image: { 
      url: String 
     } 
    }, 
    schedule: { 
     month: String, 
     date: Number, 
     hour: String, 
     minute: String 
    } 
}); 

module.exports = mongoose.model('SocialPostInQue', SocialPostInQueSchema); 

그리고 내 Schema.js 파일은 다음과 같습니다 :

SocialPostInQue 스키마 파일은

const axios = require('axios'); 
const mongoose = require('mongoose'); 
const Schema = mongoose.Schema; 
const { 
    GraphQLObjectType, 
    GraphQLString, 
    GraphQLInt, 
    GraphQLID, 
    GraphQLSchema, 
    GraphQLList, 
    GraphQLNonNull 
} = require('graphql'); 

/****** Mongoose Schemas ******/ 
const SOCIALPOSTINQUE = require('./socialPostInQue'); 

/******* Types POSSIBLE ORIGIN*******/ 
const SocialPostInQueType = new GraphQLObjectType({ 
    name:'SocialPostInQue', 
    fields:() => ({ 
     id: {type:GraphQLID}, 
     userId: {type:GraphQLID}, 
     socialPost: { 
      id: {type:GraphQLID}, 
      message: {type:GraphQLString}, 
      image: { 
       url: {type:GraphQLString} 
      } 
     }, 
     schedule: { 
      month: {type:GraphQLString}, 
      date: {type:GraphQLInt}, 
      hour: {type:GraphQLString}, 
      minute: {type:GraphQLString} 
     } 
    }) 
}); 

/****** functions ******/ 
const socialPostInQueList =() => { 
    return new Promise((resolve, reject) => { 
     SOCIALPOSTINQUE.find((err, socialPostsInQue) => { 
      if (err) reject(err) 
      else resolve(socialPostsInQue) 
     }) 
    }) 
}; 

/****** Root Query WHERE 'SocialPostInQue.socialPost OUTPUT UNDEFINED ERROR IS******/ 
const RootQuery = new GraphQLObjectType({ 
    name: 'RootQueryType', 
    fields: { 
     socialPostInQue: { 
      type: SocialPostInQueType, 
      args: { 
       id: {type:GraphQLID} 
      }, 
      resolve (parentValue, {id}) { 
       return SOCIALPOSTINQUE.findById(id) 
      } 
     }, 
     socialPostsInQue:{ 
      type: new GraphQLList (SocialPostInQueType), 
      resolve (parentValue, args) { 
       return socialPostInQueList() 
      } 
     } 
    } 
}) 

/***** Root Mutations WHERE 'Mutation.addSocialPostInQue...' ERRORS COME FROM*******/ 
const mutation = new GraphQLObjectType({ 
    name:'Mutation', 
    fields:{ 
     addSocialPostInQue:{ 
      type: SocialPostInQueType, 
      args:{ 
       userId: {type: new GraphQLNonNull (GraphQLID)}, 
       socialPost: { 
        id: {type: new GraphQLNonNull (GraphQLID)}, 
        message: {type: new GraphQLNonNull (GraphQLString)}, 
        image: { 
         url: {type: new GraphQLNonNull (GraphQLString)} 
        } 
       }, 
       schedule: { 
        month: {type: new GraphQLNonNull (GraphQLString)}, 
        date: {type: new GraphQLNonNull (GraphQLInt)}, 
        hour: {type: new GraphQLNonNull (GraphQLString)}, 
        minute: {type: new GraphQLNonNull (GraphQLString)} 
       } 
      }, 
      resolve(parentValue, args){ 
       console.log('READ', args) 
       let newSocialPostInQue = new SOCIALPOSTINQUE({ 
        name: args.name, 
        email: args.email, 
        age: args.age, 
        userId: args.userId, 
        socialPost: { 
         id: args.socialPost.id, 
         message: args.socialPost.message, 
         image: { 
          url: args.socialPost.image.url 
         } 
        }, 
        schedule: { 
         month: args.schedule.month, 
         date: args.schedule.date, 
         hour: args.schedule.hour, 
         minute: args.schedule.minute 
        } 
       }); 
       return new Promise((resolve, reject) => { 
        newSocialPostInQue.save(function (err) { 
         if(err) reject(err) 
         else resolve(newSocialPostInQue) 
        }) 
        console.log ("New Social Post In Que Added") 
       }); 
      } 
     } 
    } 
}) 

module.exports = new GraphQLSchema({ 
    query: RootQuery, 
    mutation 
}); 

답변

0

모든 중첩 된 스칼라 형이 아닌 객체 유형으로 구성 될 필요가있다. socialPost, imageschedule 필드를 확인하십시오.