Loopback:从模型中创建新的 DTO 字段

Loopback: Create new DTO fields out of models

我有一个 loopback2 API 服务。通过在模型 JSON 定义文件中使它们 hidden,我可以不通过 RESTful 层公开某些字段。

我希望能够基于其他属性创建新字段以在我的 DTO 中公开而不公开这些字段。

例如,假设我的模型有字段 firstnamesurname,我想通过 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();
});

您可以根据需要缩小远程挂钩表达式的范围,只为您关心的端点提供此行为。