GraphQL отношения в Mongoose - PullRequest
       6

GraphQL отношения в Mongoose

0 голосов
/ 22 сентября 2018

У меня есть следующая схема GraphQL

type User {
  id: String!
  name: String
  username: String!
}

type Conversation {
  id: String!
  participants: [User]
}

type Query {
  user(_id: String!): User
  conversation(_id: String!): Conversation
}

Мой распознаватель для разговора выглядит следующим образом:

conversation: async (parent, args) => {
  let conversation = await Conversation.findById(args._id);
  conversation.id = conversation._id.toString();
  return conversation;
}

Поле participants будет содержать массив пользователей ObjectId.Что мне нужно сделать в моем преобразователе, чтобы я мог получать данные пользователей в рамках вызова conversation.

Например, такой вызов

query test($id:String!){
  conversation(_id:$id){
    id,
    participants {
      id,
      username
    }
  }
}

1 Ответ

0 голосов
/ 22 сентября 2018

Вы, вероятно, использовали Reference в своей объектной модели, поэтому для получения данных об участниках вы должны использовать mongoose populate !

Это будет работать для вас:

conversation: async (parent, args) => {
  let conversation = await Conversation.findById(args._id).populate('participants');
  conversation.id = conversation._id.toString();
  return conversation;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...