如何使用DirtyKeys来了解PFUser中的“email”字段是否已被修改?

时间:2017-04-12 19:20:57

标签: parse-server cloud-code mailgun email-verification

我正在使用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);
    });



});

现在每次用户修改任何字段时都会发送电子邮件。但我想只在用户更改电子邮件时才使用该方法。

1 个答案:

答案 0 :(得分:1)

已回复here:您只需检查request.object.dirtyKeys()是否包含"email";如果是这种情况,则电子邮件属性已更改,您可以发送验证。

请注意,此检查还会捕获用户的第一次保存(即创建);如果您想避免发送邮件,可以使用request.object.isNew()查看该操作是创建还是更新。