Loopback:从模型中创建新的 DTO 字段
Loopback: Create new DTO fields out of models
我有一个 loopback2 API 服务。通过在模型 JSON 定义文件中使它们 hidden
,我可以不通过 RESTful 层公开某些字段。
我希望能够基于其他属性创建新字段以在我的 DTO 中公开而不公开这些字段。
例如,假设我的模型有字段 firstname
和 surname
,我想通过 REST API 公开一个新的 fullname
(名字 + 姓氏)但是没有其他两个。
有什么方法可以实现吗?
实际上,这是一个有点愚蠢的问题。 Loopback 不会像您想要隐藏某些属性时那样为您的 DTO 提供任何声明性的方式来提供新属性,但您可以通过远程挂钩获得所需的所有灵活性。
例如:
Person.afterRemote('*.find', function (ctx, user, next) {
if(ctx.result) {
ctx.result.forEach(function (result) {
result.fullname = `${result.firstname} ${result.surname}`;
delete result.firstname;
delete result.surname;
});
}
next();
});
您可以根据需要缩小远程挂钩表达式的范围,只为您关心的端点提供此行为。
我有一个 loopback2 API 服务。通过在模型 JSON 定义文件中使它们 hidden
,我可以不通过 RESTful 层公开某些字段。
我希望能够基于其他属性创建新字段以在我的 DTO 中公开而不公开这些字段。
例如,假设我的模型有字段 firstname
和 surname
,我想通过 REST API 公开一个新的 fullname
(名字 + 姓氏)但是没有其他两个。
有什么方法可以实现吗?
实际上,这是一个有点愚蠢的问题。 Loopback 不会像您想要隐藏某些属性时那样为您的 DTO 提供任何声明性的方式来提供新属性,但您可以通过远程挂钩获得所需的所有灵活性。
例如:
Person.afterRemote('*.find', function (ctx, user, next) {
if(ctx.result) {
ctx.result.forEach(function (result) {
result.fullname = `${result.firstname} ${result.surname}`;
delete result.firstname;
delete result.surname;
});
}
next();
});
您可以根据需要缩小远程挂钩表达式的范围,只为您关心的端点提供此行为。