我正在使用Hapi框架构建节点服务器,我尝试使用toothache插件为MongoDB创建CRUD端点,但我可以&#39 ;为我的生活弄清楚如何在两个物体之间建立关系。
我将应用简化为一个非常简单的场景:
我有两个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()
}),
}
}
我们在两种模式上应用牙痛,并获得两种模型:
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"
}
似乎牙痛插件很难对关系数据进行建模,这很遗憾,因为在现实世界中,你不能只拥有嵌入式数组,并且将被迫使用标准化数据。我真的很感激一些帮助。提前谢谢!