我正在尝试正确地设置一对一、多对一关系方法,到目前为止,我的结果是(下面的伪代码)。我使用的是Typegoose(基本上就是Mongoose和类型),如果你以前从未使用过它,那就没什么好担心的了,反正这是关于架构的。我想讨论“createBook”方法,正如你所看到的,我按顺序使用“wait,wait”,这使得它非常低效,我可以使用承诺,并在方法的末尾编写
Promise.all(bookQuery, authorQuery)
class Author extends Typegoose {
@prop()
fullName: string;
@prop({ ref: Book, default: [] })
books: Ref<Book>[];
}
class Book extends Typegoose {
@prop()
title: string;
@prop({ ref: Author })
author: Ref<Author>;
}
async createBook(title, authorId): Promise<Book> {
const book = await new this.bookRepository({
title,
author: ObjectId(authorId)
}).save();
await this.authorRepository.updateOne(
{ _id: authorId },
{ $push: { books: Types.ObjectId(book.id) } }
);
return book;
}