#mongodb #graphql
#mongodb #graphql
Вопрос:
Я пишу приложение с GraphQL и mongoose. Я создал функцию для получения всех заказов внутри MongoDB. Объект booking содержит ссылку на другой объект, называемый Service . Когда я сохраняю бронирование, он сохраняет связанный объект сервиса в качестве идентификатора объекта в MongoDB. Когда я делаю запрос в graphql, чтобы получить все заказы, graphql не предоставляет сервисы и их типы полей, поскольку graphql получает только ObjectId. Как я могу исправить graphql?
Ответ №1:
Вам нужно написать распознаватель для ServiceType в AppointmentBooking.
Query: {
async getAppointmentBookings() {
...
}
},
Mutation: {
...
},
AppointmentBooking: {
serviceType: async(parent, args, ctx, info) => {
// Here you will get the objectId from the parent that need to query services
// This will call for every object inside the bookings
// Assuming you are storing the objectID for the services in the key servicetype
const serviceId = parent.serviceType;
try {
const serviceDetails = await Sevice.findByID(serviceID) ;
return serviceDetails;
} catch (err) {
throw new Error(err);
}
}
}
Комментарии:
1. Спасибо за ответ! Мне интересно, является ли это общим шаблоном проектирования для работы с GraphQL и базами данных, такими как MongoDB?
2. Для любых будущих ссылок const serviceDetails = await Service.findById(serviceId) — это то, что сработало, поскольку этот метод вызывается для каждой записи на прием, которая содержит свой собственный serviceId.
3. medium.com/paypal-engineering /. … Это сообщение в блоге даст лучшее понимание шаблонов,
4. Отлично! Спасибо за помощь!