【问题标题】:Stronglooop loopback after remotehook couldn't modify responseremotehook 后的 Strongloop 环回无法修改响应
【发布时间】:2016-08-23 00:40:17
【问题描述】:

我想在登录请求上添加额外的详细信息,我有以下内容

module.exports = function(UserAccount) {

UserAccount.afterRemote('login', function(ctx, result, next) {
    var response = [];

    if (ctx.result) {
        var userId = result.userId;
        var token = result.id;

        // attach user profile
        UserAccount.findById(userId, function(err, user) {
            if (err)
                console.log(err);
            if (user) {
                response.profile = user;
                response.accessToken = token;

                ctx.result = response;
                console.log(ctx.result);

                return next();

            }

        });

    }

});

};

next() 回调调用之前的日志正确记录。 问题是总是返回 empty response

有什么问题?

【问题讨论】:

  • 你的函数没有返回任何东西,这可能是问题吗?
  • @JaromandaX 它认为它确实返回了回调 next() ,顺便说一句,响应代码是 200,在控制台上我可以得到响应日志。
  • 返回来自内部函数 - 我的意思是你的主函数返回 undefined - 并不是说​​这是你的问题
  • @JaromandaX 关于主要功能,这就是strongloop的工作原理,我认为这不是问题,我认为问题在于异步控制流。我可以在这里使用 Promise,但我得到了相同的结果。如果您想查看承诺版本,我可以发布片段。
  • 我想知道问题是否在于您正在覆盖 context.result。而不是 ctx.result=response,尝试 ctx.result.profile=user 和 ctx.result.accessToken=token

标签: javascript node.js asynchronous strongloop


【解决方案1】:

只需调用next() 而不是返回它。另外,修改ctx.res.body 以修改实际的响应正文。

【讨论】:

    猜你喜欢
    • 2015-09-18
    • 2019-11-10
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2016-12-04
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多