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

时间:2015-06-14 18:44:41

标签: loopbackjs

我在模型的ctx.result操作挂钩上修改after save以简化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。< / p>

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

1 个答案:

答案 0 :(得分:2)

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