Prisma不返回创建的相关记录

时间:2019-11-19 21:17:14

标签: graphql prisma prisma-graphql

我想创建一个新的graphql api,但遇到了我正在努力解决的问题。

该代码是开源的,可以在以下网址找到:https://github.com/glitr-io/glitr-api

我想创建一个变异来创建具有关系的记录...似乎该记录已正确地创建了所有预期的关系((直接检入数据库时​​),但是由{{1}返回的值}方法,会丢失所有关系。

...所以我在api上遇到错误,因为“无法为不可为空的字段Meme.author返回null”。我无法弄清楚代码中可能出什么问题。

解析器如下所示:

create<YourTableName>

此处... const newMeme = await ctx.prisma.createMeme({ author: { connect: { id: userId }, }, memeItems: { create: memeItems.map(({ type, meta, value, style, tags = [] }) => ({ type, meta, value, style, tags: { create: tags.map(({ name = '' }) => ( { name } )) } })) }, tags: { create: tags.map(({ name = '' }) => ( { name } )) } }); console.log('newMeme', newMeme); ... newMeme的值(此解析器返回的值)是:

console.log

其中返回的那些字段是自动生成的字段。所以我遇到以下突变的错误,因为我试图找到作者:

newMeme {
  id: 'ck351j0f9pqa90919f52fx67w',
  createdAt: '2019-11-18T23:08:46.437Z',
  updatedAt: '2019-11-18T23:08:46.437Z',
}

谁能看到是什么原因引起的? (如前所述...在直接签入数据库时​​,将按照预期的所有关系成功创建记录。)

1 个答案:

答案 0 :(得分:0)

如prisma docs中所述,Prisma客户端函数承诺写入数据(例如,对于createMeme函数)仅返回对象的标量字段:

在数据库中创建新记录时,创建方法采用一个输入对象,该对象将记录的所有标量字段包装为 创建。它还提供了一种方法来为 模型,可以使用嵌套对象写入来提供。

每个方法调用都会返回一个对象的Promise,该对象包含所有 刚创建的模型的标量字段。

请参阅:https://www.prisma.io/docs/prisma-client/basic-data-access/writing-data-JAVASCRIPT-rsc6/#creating-records

要还返回对象的关系,您需要使用信息片段或流利的api再次读取对象,请参阅:https://www.prisma.io/docs/prisma-client/basic-data-access/reading-data-JAVASCRIPT-rsc2/#relations