1 回答
TA贡献1796条经验 获得超10个赞
这个是不是你想要的
之前没注意到
crypto.randomBytesAsync(20)
是个异步调用,返回的 Promise,我查了下 bluebird 的 API,和 ES6 的 Promise 差不多,所以大概应该改成这样:
User.registerAsync(new User(body), password)
.then(user => Promise.all([user, crypto.randomBytesAsync(20)]))
.then(result => {
const user = result[0];
const buf = result[1];
user.activeToken = user._id + buf.toString("hex");
user.activeExpires = Date.now() + 24 * 3600 * 1000;
var link = config.URL + "/#/account/login/" + user.activeToken;
mailer({
to: body.username,
subject: "欢迎注册依萨卡后勤端",
html: "请点击 <a href=\"" + link + "\" target=\"_blank\">此处</a>激活"
});
return user.save();
})
.then(user => res.json({ message: `已发送邮件至${user.username}请在24小时内按照邮件提示激活` }))
.catch(err => next(err));
添加回答
举报