Запрос с различными типами в GraphQL - PullRequest
0 голосов
/ 03 января 2019

Итак, у меня есть graphQL userType и EventType, а на моем userType я должен сделать вложенный запрос, используя EventType, но мне также нужно вернуть информацию о пользователе, но, поскольку EventType не имеет полейтак же, как информация о пользователе, поэтому для передачи кода на тестирование мне пришлось вручную скопировать-вставить UserType в EventType, но я не хочу, чтобы это было решено.Есть ли способ любить типы слияния?Я использую mongoDB в качестве базы данных, поэтому при попытке сделать POPULATE информация о пользователе возвращается, но Graphql усложняет задачу.извините, я еще новичок в graphql.

, так что это то, что я сделал на EventType, чтобы пройти тест.при исправлении я копирую UserType

module.exports = {
  EventType: new GraphQLObjectType({
    name: 'Event',
    fields: () => ({
      id: {type: GraphQLID},
      organizerId: {type: new GraphQLList(GraphQLID)},
      title: {type: GraphQLString},
      image: {type: GraphQLString},
      description: {type: GraphQLString},
      location: {type: GraphQLString},
      items: {type: GraphQLInt},
      date: {type: GraphQLString},
      attendeesId: {type: new GraphQLList(GraphQLID)},
      supplies: {type: new GraphQLList(GraphQLString)},
      test: {type: GraphQLString},

      // FIXME: USER TYPES!
     firstName: {type: GraphQLString},
     lastName: {type: GraphQLString},
     email: {type: GraphQLString},
     age: {type: GraphQLInt},
     token: {type: GraphQLString},
     image: {type: GraphQLString},
     phone: {type: GraphQLInt},
     address: {type: GraphQLString},
     // ! TYPE RELATION
     userRelatedToEvent: {
     type: UserType,
     resolve: async (parent, args) => {
       const id = {
         id: parent.organizerId
       };
       return await getCurrentUser(id);
      }
    }
  })
 })
};

это мой код на UserType, который выполняет отношение типа на EventType см. resolve prop

module.exports = {
 UserType: new GraphQLObjectType({
 name: 'User',
 fields: () => ({
  id: {type: GraphQLID},
  firstName: {type: GraphQLString},
  lastName: {type: GraphQLString},
  email: {type: GraphQLString},
  age: {type: GraphQLInt},
  token: {type: GraphQLString},
  image: {type: GraphQLString},
  phone: {type: GraphQLInt},
  address: {type: GraphQLString},
  eventsId: {type: new GraphQLList(GraphQLID)}, // <-- this will be the query for userRelatedToUser
  statusCode: {type: GraphQLInt},
  isSuccess: {type: GraphQLBoolean},
  msg: {type: GraphQLString},
  test: {type: GraphQLString}, // testing query
  // errors: { type: GraphQ LString },
  eventRelatedToUser: {
    type: require('./eventTypeDef').EventType,
    resolve: async (parent, args) => {
      const event = {
        event: parent.eventsId
      };
      const test = await getEventWithEventId(event); // <-- queries event
      const id = {
        id: test.attendeesId
      };
      const users = await getCurrentUser(id); // <-- user info
      console.log(users);
      return {...users, ...test};
    }
   }
  })
 })
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...