【发布时间】:2018-12-04 04:11:09
【问题描述】:
我使用 React 和 Loopback 3 构建了一个注册组件。起初我没有使用电子邮件验证。在下面的代码中,我收到了来自 rest api 关于用户创建的响应。
export function signUpUser(user) {
let userEmail = user.email;
let userPassword = user.password;
let userName = user.userName;
let privilege="user"
let credentials = {
email: userEmail,
password: userPassword,
userName: userName,
privilege:privilege
};
//console.log(credentials);
return dispatch => {
axios
.request({
method: "post",
url: loopBack + "/blogusers",
data: credentials
})
.then(response => {
console.log(response)
return dispatch(signUpSuccess(response.data));
})
.catch(error => {
return dispatch(signUpFailure(error));
});
};
}
我的用户模型 js 是这样的
"use strict";
module.exports = function(Bloguser) {
};
在我添加钩子以创建 api 后,我的用户模型 js 就是这样。
"use strict";
var config = require("../../server/config.json");
var path = require("path");
var senderAddress = "jp6t63je22rfqgf7@ethereal.email";
module.exports = function(Bloguser) {
//send verification email after registration.
Bloguser.afterRemote("create", function(context, userInstance, next) {
console.log(">user.afterRemote triggered");
var options = {
type: "email",
to: userInstance.email,
from: senderAddress,
subject: "Thanks for registering.",
template: path.resolve(__dirname, "../../server/views/verify.ejs"),
Bloguser: userInstance
};
userInstance.verify(options, function(err, response) {
if (err) {
Bloguser.deleteById(userInstance.id);
return next(err);
}
console.log(">verification email sent.", response);
context.res.render("response", {
title: "Signed up successfully",
content:
"Please check your email and click on the verification link" +
"before logging in.",
redirectTo: "/login",
redirectToLinkText: "Log in"
});
});
});
};
通过此代码,我可以成功发送验证电子邮件,并且可以通过电子邮件中的链接验证用户。但是我无法从 signUpUser() 函数中的 Post api 获得响应。我需要得到响应以显示他/她的注册过程的用户状态
【问题讨论】:
-
要获得响应,您需要在函数中使用
cb(callback)。 -
我应该在哪里使用它。
标签: javascript reactjs react-redux loopback email-verification