Реляционные данные GraphQL и ссылки на документы MongoDB - PullRequest
0 голосов
/ 29 апреля 2019

Я новичок в GraphQL и пытаюсь узнать, как лучше всего использовать его с MongoDB.В GraphQL есть способ определить отношения между типами следующим образом:

type Booking {
        id: ID!
        date: String!
        author: [User!]!
        event: [Event!]!
    }

Но MongoDB также может определить ссылки между документами следующим образом:

    event: {
      type: Schema.Types.ObjectId,
      ref: 'Event'
    },
    author: {
      type: Schema.Types.ObjectId,
      ref: 'User'
}

Если я хотелчтобы получить авторов резервирования, я могу выполнить поиск на конце GraphQL в резольвере следующим образом:

Booking: {
        author(parent, args, ctx, info) {
            return users.filter(user => {
                return user.id === parent.author;
            })
        }
    },

или использовать метод MongoDB find() для поиска авторов.из Booking.find() в преобразователе следующим образом:

bookings: async () => {
    try {
      const bookings = await Booking.find();
      return bookings.map(booking => {
        return //perform MongoDB find() here to get the authors using the references
      });
    } catch (err) {
      throw err;
}  

Мой вопрос: необходимо ли определять связь между данными как на стороне GraphQL, так и на стороне MongoDB?Какой способ из двух упомянутых выше является лучшим способом получения реляционных данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...