как мы можем обрабатывать вложенные запросы при использовании подписок Graphql - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь использовать Graphql-подписки для подписки на новые твиты, которые могут создавать другие пользователи, пока я на домашнем экране. Он всегда возвращает мне неопределенное свойство пользователя, и Graphql не выясняет, почему это происходит на самом деле, ис чего начать отладку

файла схемы

export default `
  scalar Date

  type User {
    _id: ID!
    username: String
    email: String!
    firstName: String
    lastName: String
    avatar: String
    createdAt: Date!
    updatedAt: Date!
  }
  type Tweet {
    _id: ID!
    text: String!
    user: User!
    favoriteCount: Int!
    createdAt: Date!
    updatedAt: Date!
  }
  type Query {
    getTweets: [Tweet]
  }
  type Mutation {
    createTweet(text: String!): Tweet
  }
  type Subscription {
    tweetAdded: Tweet!
  }

  schema {
    query: Query
    mutation: Mutation
    subscription: Subscription
  }
`;

распознавателей твитов

const TWEET_ADDED = "TWEET_ADDED";

createTweet: async (_, args, { user, pubsub }) => {
        try {
            await requireAuth(user);
            let tweet = await Tweet.create({ ...args, user: user._id });
            tweet = await Tweet.populate(tweet, 'user')
            pubsub.publish(TWEET_ADDED, { [TWEET_ADDED]: tweet });
            return tweet;
        } catch (error) {
            throw error;
        }
    },
tweetAdded: {
        subscribe: (_, __, { pubsub }) => pubsub.asyncIterator(TWEET_ADDED)
    }

и на стороне клиента вот что я пытаюсь получить

subscription {
  tweetAdded {
    text
    _id
    createdAt
    favoriteCount
    user {
       username
       avatar
       firstName
       lastName
    }
  }
}

РЕДАКТИРОВАТЬ: неопределенное пользовательское свойство отображается в браузере, в то время как я получаю, я не могу вернуть ноль для ненулевого поля в graphiql graphiql против браузера

...