如何使用 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() 来确定操作是创建还是更新。