我尝试创建一个有4个答案和5个标签的问题,但当我尝试创建多个标签时,我得到这个错误:键入“{创建:{名称:字符串;}[]; }'不能赋值给类型' never ',但是当我只创建一个标签时,它就可以正常工作了。
这给了我错误:键入“{创建:{名称:字符串;“}[]; }”不能赋给类型“never”
const savedQuestion = await this.prisma.question.create({
data: {
tema: createQuestionDto.tema,
questao: createQuestionDto.questao,
nivel: createQuestionDto.nivel,
answer: {
create: [
{texto: createQuestionDto.answer[0].texto},
{texto: createQuestionDto.answer[0].texto},
{texto: createQuestionDto.answer[0].texto},
{texto: createQuestionDto.answer[0].texto},
],
},
question_tags: {
create: {
tags: {
create: [
{nome: "test"},
{nome: "test"},
{nome: "test"},
{nome: "test"},
{nome: "test"},
],
},
},
},
},
});
这可以正常工作,但只创建一个标记
const savedQuestion = await this.prisma.question.create({
data: {
tema: createQuestionDto.tema,
questao: createQuestionDto.questao,
nivel: createQuestionDto.nivel,
answer: {
create: [
{texto: createQuestionDto.answer[0].texto},
{texto: createQuestionDto.answer[0].texto},
{texto: createQuestionDto.answer[0].texto},
{texto: createQuestionDto.answer[0].texto},
],
},
question_tags: {
create: {
tags: {
create: {nome: "test"},
},
},
},
},
});
我的海报
create table QUESTION (
id serial primary key,
tema varchar(255) not null,
questao text not null,
NIVEL NIVEL not null
);
create table TAGS(
id serial primary key,
nome varchar(255) not null
);
create table QUESTION_TAGS(
question_id int not null references question(id),
tags_id int not null references tags(id),
primary key (question_id, tags_id)
);
create table ANSWER(
id serial primary key,
texto text not null,
question_id int not null references question(id)
);
CREATE TYPE NIVEL AS ENUM ('facil', 'medio', 'dificil', 'muito dificil', 'expert');
棱镜架构
model quetion{
id Int @id @default(autoincrement())
tema String @db.VarChar(255)
questao String
nivel nivel
question_tags question_tags[]
answer answer[]
}
model answer{
id Int @id @default(autoincrement())
texto String
question_id Int
question question @relation(fields: [question_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}
model tags {
id Int @id @default(autoincrement())
nome String @db.VarChar(255)
question_tags question_tags[]
}
model question_tags {
question_id Int
tags_id Int
question question @relation(fields: [question_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
tags tags @relation(fields: [tags_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
@@id([question_id, tags_id], map: "Pergunta_Tags_pk")
}
1条答案
按热度按时间eqqqjvef1#
我花了一段时间才意识到这段代码在做什么。你的代码不必要地复杂。让我们一步一步地分解它在做什么。
1.它正在创建一个包含一个
question_tags
的问题。1.根据架构,一个
question_tags
可以有一个tags
。1.在第一个代码片段中,您创建了five
tags
,并将它们分配给onequestion_tags
(一个question_tags
只能有onetags
),因此您得到了一个类型错误。1.第二个代码片段修复了类型错误,只将one
tags
赋值给question_tags
。现在,您需要五个
question_tags
,每个question_tags
都有一个单独的tags
。为此,您需要在question_tags[]
数组中有多个create
对象。它看起来如下所示(在数组中添加更多create
对象)。我还想提几件事:
1.尽量用英语命名变量,并且尽可能的描述性。正确的变量命名是最容易做到的事情之一,可以让你的代码“更干净”。
1.您可能不希望这样设计数据库。我会使用
tags
+enums
或question_tags
+enums
。我不会让question_tags
引用tags
。这会使代码更难理解。