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 丢失
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()。