Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析循环中的AfterSave触发器_Javascript_Node.js_Parse Platform_Parse Cloud Code_Back4app - Fatal编程技术网

Javascript 解析循环中的AfterSave触发器

Javascript 解析循环中的AfterSave触发器,javascript,node.js,parse-platform,parse-cloud-code,back4app,Javascript,Node.js,Parse Platform,Parse Cloud Code,Back4app,我的aftersave处理程序有问题。因此,当新用户登录时,它会检查tProfile和sProfile字段是否为空,如果为空,则会为用户保存acl,然后使用NodeEmailer nmp包向用户发送电子邮件。但是,在用户被保存后,服务器会在一个循环中不断发送一封又一封电子邮件,在发送了大约64封电子邮件之后,google阻止了登录尝试,非常感谢您的帮助。我的云代码如下 Parse.Cloud.afterSave(Parse.User, (request) => { cons

我的aftersave处理程序有问题。因此,当新用户登录时,它会检查tProfile和sProfile字段是否为空,如果为空,则会为用户保存acl,然后使用NodeEmailer nmp包向用户发送电子邮件。但是,在用户被保存后,服务器会在一个循环中不断发送一封又一封电子邮件,在发送了大约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);
          }
        });
    }

若您试图在afterSave中保存相同的类对象,它将是递归函数

您可以使用beforeSave触发器

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

若您试图在afterSave中保存相同的类对象,它将是递归函数

您可以使用beforeSave触发器

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

很明显,如果您尝试在afterSave中保存,它将是一个递归函数。如果您想修改用户数据,您应该在保存之前使用。因此,从您所说的,我定义的任何aftersave处理程序都将是递归的??我的目标是在新用户注册后向他们发送电子邮件,如果没有aftersave,我怎么能做到这一点?我不想在从客户端注册后调用另一个cloudcode函数。我想在他们注册后尽快发送电子邮件,这只能通过云代码实现,我不能使用before save,因为没有before Sign up Handler,我不明白为什么aftersave是递归的,保存后不应该在用户类的每次保存中调用一次吗?它是递归的,因为您正在为用户类的save事件定义一个触发器,所以如果您在trigger中调用save函数,它将是一个无止境的循环。使用afterSave,您可以对同一类进行查询,也可以为不同的类保存操作。如果您在beforeSave中检查您的用户是否存在,则可以向新用户发送电子邮件。哦,天哪,非常感谢您,我现在觉得自己太笨了。如果您尝试在afterSave中保存,显然这将是一个递归函数。如果您想修改用户数据,您应该在保存之前使用。因此,从您所说的,我定义的任何aftersave处理程序都将是递归的??我的目标是在新用户注册后向他们发送电子邮件,如果没有aftersave,我怎么能做到这一点?我不想在从客户端注册后调用另一个cloudcode函数。我想在他们注册后尽快发送电子邮件,这只能通过云代码实现,我不能使用before save,因为没有before Sign up Handler,我不明白为什么aftersave是递归的,保存后不应该在用户类的每次保存中调用一次吗?它是递归的,因为您正在为用户类的save事件定义一个触发器,所以如果您在trigger中调用save函数,它将是一个无止境的循环。使用afterSave,您可以对同一类进行查询,也可以为不同的类保存操作。如果你在beforeSave中检查你的用户是否存在,你就可以向新用户发送电子邮件。哦,天哪,非常感谢你,我现在感觉好笨。但是我认为object.isNew()不再有效了。你也可以检查是否有object的id,而不是isNew()。确实如此,检查了objectid是否存在。但是我不认为object.isNew()还可以检查是否存在对象id,而不是isNew()。确实如此,检查了objectid是否存在。