【发布时间】: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