我正在使用Parse-Server和mailgun的云代码向注册或更改其电子邮件的用户发送电子邮件验证码。
BeforeSave方法:
Parse.Cloud.beforeSave(Parse.User, function(request, response) {
var verificationCode = Math.floor(Math.random()*999999);
var text = "Hi ... this is a verification code:" + verificationCode;
var data = {
from: 'WBP Team <info@test.eu>',
to: request.object.get("email"),
subject: 'Please verify your e-mail for you Account',
text: text
};
mailgun.messages().send(data, function (error, body) {
if (error) {
response.error("Email not sent..."+error);
}else{
var user = Parse.User.current();
user.set("emailVerificationCode", verificationCode);
user.save();
response.success("Email Sent");
}
console.log(body);
});
});
现在每次用户修改任何字段时都会发送电子邮件。但我想只在用户更改电子邮件时才使用该方法。
答案 0 :(得分:1)
已回复here:您只需检查request.object.dirtyKeys()
是否包含"email"
;如果是这种情况,则电子邮件属性已更改,您可以发送验证。
请注意,此检查还会捕获用户的第一次保存(即创建);如果您想避免发送邮件,可以使用request.object.isNew()
查看该操作是创建还是更新。