在使用Express-Stormpath模块通过node / express将用户注册到stormpath后,我发生了一个奇怪的错误(至少在我看来)。
注册后,我似乎无法在第一个用户会话的各种路由中访问customData。在注册时,我正在为发票创建和数组
app.use(stormpath.init(app, {
...,
expandCustomData: true,
postRegistrationHandler: function(account, req, res, next) {
account.customData.invoices = [];
account.save();
next();
}
}));
但是当我在索引路径中访问它时,我收到此错误
router.get('/', stormpath.loginRequired, function(req, res){
console.log(req.user.customData.invoices ); // undefined
res.render('index', {
title: 'Index'
});
});
如果我杀了我的本地并重启它,我得到
console.log(req.user.customData.invoices ); // []
这就是我想要的。
任何人都能明白我在这里做错了吗?
提前谢谢。答案 0 :(得分:3)
这里发生的事情是:当你在postRegistrationHandler
代码内时 - 默认情况下,customData将不会自动生效。在注册之后,postRegistrationHandler
会立即被称为 ,之后任何帮助函数都会有趣。
要使示例正常工作,首先要从Stormpath服务中“获取”customData。
这是一个有效的例子:
app.use(stormpath.init(app, {
...,
expandCustomData: true,
postRegistrationHandler: function(account, req, res, next) {
account.getCustomData(function(err, data) {
if (err) return next(err);
data.invoices = [];
data.save();
next();
});
}
}));
上述问题在文档中真的不清楚 - 这是100%我的错(我是图书馆的作者) - 今天我会修复这个问题=)