修改 ctx.result 不会更改 POST 响应

Modifying ctx.result does not change POST response

我正在修改模型的 after save 操作挂钩上的 ctx.result 以简化 POST 方法的响应。响应应仅包含生成的 id 和不属于模型一部分的响应仅 属性:

MyModel.observe('after save', function(ctx, next) {
    if (ctx.instance && ctx.isNewInstance) {
        ctx.result = {
            id : ctx.instance.id,
            responseOnlyProperty: MyModel.getResponseOnlyPropertyValue()
        };
        console.log('result:', ctx.result);
    }
    next();
});

正如预期的那样 ctx.result 被写入控制台并设置了新值,但是发送回客户端的响应主体仍然包含所有模型属性,并且不包含新添加的 responseOnlyProperty .

修改响应体的正确方法是什么?

他们建议使用 afterRemote 挂钩来调整响应:how to modify the responses loopback sends。因此,只需将您实现的逻辑移动到该方法中即可。 ctx.result 很可能会在后期填充,这就是为什么您在模型挂钩中放入 ctx.result 的任何内容都会在以后被覆盖。