我试图找出在Mongoose中添加实例方法或静态方法的最佳方法,以基于当前文档中存储的ObjectId从另一个集合中检索文档。
例如,假设我有一个Book模式,它看起来像这样:
{title: String,
authorId: ObjectId,
publisherId: ObjectId
}
authorId将引用另一个集合中的作者文档的ID(可能是“作者”)。
我想做的是在我的书中添加一个名为“作者”的属性,该属性将检索该作者文档并将其视为我的书的子对象。因此,而不是像这样:
Book = await Book.findOne();
Author = await Author.findOne({_id: Book.authorId})
console.log(Author.fullName) // returns "Stephen King"
我可以简单地做到:
Book = await Book.findOne({});
console.log(Book.author.fullName) // Also returns Stephen King
或可能
console.log(Book.author().fullName)
关键是要存储作者对象中的书本对象,以便可以彼此独立地进行更新。
在Meteor中,这可以通过收集助手来完成,但是恐怕我不知道如何在Mongoose中做到这一点。我会使用实例方法吗?静态的吗?
没什么,因为我什至不知道你会怎么做。