Триггер Parse AfterSave собирается в цикле - PullRequest
1 голос
/ 21 февраля 2020

У меня проблемы с моим обработчиком после сохранения. Поэтому, когда новый пользователь входит в систему, он проверяет, чтобы поля tProfile и sProfile были пусты, если это так, он сохраняет, сохраняет acl для пользователя, а затем отправляет электронное письмо пользователю, используя пакет nmamailer nmp. Но после того, как пользователь сохранен, сервер продолжает отправлять электронную почту после электронной почты в al oop, было отправлено около 64 электронных писем, после которых Google заблокировал попытки входа в систему, помощь будет очень признательна. Мой облачный код указан ниже

Parse.Cloud.afterSave(Parse.User, (request) => {
        const user = request.object;
        const t = user.get('tProfile');
        const s = user.get('sProfile');
        if (!t && !s) {
        user.setACL(new Parse.ACL(user));
        user.save(null,{ useMasterKey: true });
        sendWelcomeEmail(user.getUsername(),user.get('type'));
        return;
        }else{
            console.log("Condition Working");
            return;
        }
    });

const sendWelcomeEmail = (userName,type) => {
        var nodemailer = require('nodemailer');
        var transporter = nodemailer.createTransport({
          service: 'gmail',
          auth: {
            user: 'tanzim3421@gmail.com',
            pass: 'oyhlyk****ocvhaa'
          }
        });
        var mailOptions = {
          from: 'tutorbeargroup@gmail.com',
          to: userName,
          subject: 'Welcome to TutorBear',
          text: 'Dear '+type+', thankyou for signing up with us. If you have any questions please contact us at: 01726409161'
        };
        transporter.sendMail(mailOptions,(error, info)=>{
          if (error) {
            console.log(error);
          } else {
           console.log('Email sent: ' + info.response);
          }
        });
    }

1 Ответ

0 голосов
/ 21 февраля 2020

Если вы попытаетесь сохранить объект того же класса в afterSave, это будет рекурсивная функция.

Вы можете использовать триггер beforeSave

Parse.Cloud.beforeSave(Parse.User,async(req)=>{
  let userObject = req.object;
  if(userObject.isNew()){
    //Your Logic
  }
});
...