Я пытаюсь написать собственный распознаватель в GraphQL, используя graphql-yoga и Prisma.
Я добавляю соединение с базой данных в контекст. Когда я печатаю.
await context.db.collection('Offer').find({}).toArray()
Я могу видеть массив таких объектов:
{ _id: 5d061ffc6344590007407bee,
createdAt: 2019-06-16T10:54:52.196Z,
description: 'Wow. My offer 3!' }
Когда я печатаю
await context.prisma.offers({});
Я вижу подобные объекты
{ id: '5d061ffc6344590007407bee', <- id, not _id
createdAt: '2019-06-16T10:54:52.196Z' <- string not DateTime
description: 'Wow. My offer 3!' }
Есть довольно похожие объекты, но если я верну результат запроса призмы в качестве ответа от распознавателя, все будет в порядке. Но когда я пытаюсь вернуть результат Монго, он не работает.
Можно ли каким-либо образом преобразовать необработанный объект mongodb в объект призмы, который можно правильно вернуть в распознаватель?
Я нашел обходной путь как:
const prismaArray = await Promise.all(mongoArray.map(async offer => await context.prisma.offer({id: offer._id})));
но я боюсь, что это решение отправляет в базу данных mongoArray.length
запросы вместо того, чтобы просто использовать данные, доступные в mongoArray
, и обрабатывать их.
Я все еще ищу простой и оптимальный способ преобразования необработанных объектов mongo db в объекты призмы.