我正在使用Hapi框架构建节点服务器,并且正在尝试使用toothache插件为 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()
}),
}
}
我们在两种模式上都应用了toothache,得到了两个模型:
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"
}
我如何在同一个处理程序中询问 Author 模型,以获得如下答案:
{
"_id": "54762fd0654c479400daa9d4",
"authorId": "547607c7c80064281e7a7b50",
"authorName": "Some Great Writer",
"title": "Some Book Title"
}
似乎toothache 插件很难对关系数据进行建模,这是一种耻辱,因为在现实世界中,您将无法仅使用嵌入式数组,并且将被迫使用规范化数据。我真的很感激一些帮助。先感谢您!