Я новичок в 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?Какой способ из двух упомянутых выше является лучшим способом получения реляционных данных?