如何使用 DirtyKeys 知道 PFUser 中的 "email" 字段是否已被修改?
How to use DirtyKeys to know if "email" field in PFUser has been modified?
我正在使用 Parse-Server 的 cloudcode 和 mailgun 向注册或更改电子邮件的用户发送电子邮件验证码。
保存前方法:
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);
});
});
现在每次用户修改任何文件时都会发送电子邮件。但我只想在用户更改电子邮件时使用该方法。
已回答here:您只需检查request.object.dirtyKeys()
是否包含"email"
;如果是这种情况,电子邮件 属性 已更改,您可以发送验证。
请注意,此检查还会捕获用户的第一次保存(即创建);如果你想避免发送邮件,你可以使用 request.object.isNew()
来确定操作是创建还是更新。
我正在使用 Parse-Server 的 cloudcode 和 mailgun 向注册或更改电子邮件的用户发送电子邮件验证码。
保存前方法:
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);
});
});
现在每次用户修改任何文件时都会发送电子邮件。但我只想在用户更改电子邮件时使用该方法。
已回答here:您只需检查request.object.dirtyKeys()
是否包含"email"
;如果是这种情况,电子邮件 属性 已更改,您可以发送验证。
请注意,此检查还会捕获用户的第一次保存(即创建);如果你想避免发送邮件,你可以使用 request.object.isNew()
来确定操作是创建还是更新。