Typeorm 不返回生成的数据 ID

Ari*_*ami 3 javascript node.js typeorm

我使用 Typeorm (v8.0.2) 和 Nestjs(v8) 以及 Nodejs(v16)。我的问题是当我创建一本书时 Typeorm 不返回生成的书籍 ID

这是Book.entity

@Entity()
export class Book {

@PrimaryGeneratedColumn('increment')
id: number;

@Column()
title: string;

@Column()
author: string;
}
Run Code Online (Sandbox Code Playgroud)

这是book.service

async createBook(createBookDto: CreateBookDto): Promise<Book> {
  const book = await this.bookRepository.create(createBookDto)
  await this.bookRepository.save(createBookDto)
  return book
}
Run Code Online (Sandbox Code Playgroud)

当我使用邮递员并创建一本书时,它只会返回

{
   title: "example"
   author: "foo"
}
Run Code Online (Sandbox Code Playgroud)

生成的书籍 ID 丢失

D.Z*_*tov 8

TL;DRthis.bookRepository.save(createBookDto) : 返回, not的结果this.bookRepository.create(createBookDto)

来自文档

create- 创建 的新实例User。可以选择接受带有用户属性的对象文字,这些属性将被写入新创建的用户对象中。

const user = repository.create(); // same as const user = new User();
const user = repository.create({
    id: 1,
    firstName: "Timber",
    lastName: "Saw"
}); // same as const user = new User(); user.firstName = "Timber"; user.lastName = "Saw";
Run Code Online (Sandbox Code Playgroud)

在您的示例中,您使用的@PrimaryGeneratedColumn()装饰器使用数据库级自动增量函数。该列的值将在该save()方法之后生成,而不是在 之后生成create()