我试图使用graphql-yoga和Prisma在GraphQL中编写自定义解析器。
我将数据库连接附加到上下文。当我键入内容时。
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!' }
有非常相似的对象,但是如果我返回pyramida查询的结果作为解析器的响应,则一切正常。但是当我尝试返回mongo的结果时,它不起作用。
有什么方法可以将原始mongodb对象转换为可以在解析器中正确返回的pyramida对象?
我发现解决方法为:
const prismaArray = await Promise.all(mongoArray.map(async offer => await context.prisma.offer({id: offer._id})));
但是我担心此解决方案会发送到数据库mongoArray.length
查询,而不是简单地使用mongoArray
中可访问的数据来处理它们。
我仍在寻找将mongo db原始对象转换为棱镜对象的简单且最佳的方式。