Node.js 如何在使用Tootache hapi插件创建的两个模型之间建立关系模型?

Node.js 如何在使用Tootache hapi插件创建的两个模型之间建立关系模型?,node.js,hapijs,joi,Node.js,Hapijs,Joi,我正在使用该框架构建一个节点服务器,并尝试使用该插件为MongoDB创建CRUD端点,但我始终无法弄清楚如何在两个对象之间创建关系 我将应用程序简化为一个非常简单的场景: 我有两个CRUD模式,一个用于作者,一个用于书籍。一本书包含作者的id,但不包含姓名。问题是:如何编写一个路由,返回一本包含作者姓名的书 var bookCRUD = { collection: 'books', create: { payload: Joi.object().keys({

我正在使用该框架构建一个节点服务器,并尝试使用该插件为MongoDB创建CRUD端点,但我始终无法弄清楚如何在两个对象之间创建关系

我将应用程序简化为一个非常简单的场景:

我有两个CRUD模式,一个用于作者,一个用于书籍。一本书包含作者的id,但不包含姓名。问题是:如何编写一个路由,返回一本包含作者姓名的书

var bookCRUD = {
    collection: 'books',
    create: {
        payload: Joi.object().keys({
            authorId: Joi.string().required(),
            title: Joi.string().required()
        }),
    },
    update: {
        payload: Joi.object().keys({
            authorId: Joi.string(),
            title: Joi.string()
        }),
    }
}

var authorCRUD = {
    collection: 'authors',
    create: {
        payload: Joi.object().keys({
            name: Joi.string().required()
        }),
    },
    update: {
        payload: Joi.object().keys({
            name: Joi.string().required()
        }),
    }
}
我们在两种模式上都应用了Tootache,并获得了两种模型:

var Book = require('toothache')(bookCRUD);
var Author = require('toothache')(authorCRUD);
检索某本书的路径如下所示:

plugin.route({
    path: '/books/{id}',
    method: 'GET',
    config: {
        handler: Book.get
    }
});
并将返回:

{
    "_id": "54762fd0654c479400daa9d4",
    "authorId": "547607c7c80064281e7a7b50",
    "title": "Some Book Title"
}
我如何在同一处理程序中询问作者模型,以获得如下答案:

{
    "_id": "54762fd0654c479400daa9d4",
    "authorId": "547607c7c80064281e7a7b50",
    "authorName": "Some Great Writer",
    "title": "Some Book Title"
}
牙痛插件似乎使关系数据建模变得非常困难,这是一个遗憾,因为在现实世界中,您将无法只使用嵌入式数组,而将被迫使用标准化数据。我真的很感激你能帮我。提前谢谢你