我的保存后处理程序有问题。 因此,当新用户登录时,它会检查 tProfile 和 sProfile 字段是否为空,如果是,则为用户保存一个 acl,然后使用 nodemailer nmp 包向用户发送电子邮件。 但是在保存用户后,服务器会在一个循环中继续发送一封又一封电子邮件,之后发送了大约 64 封电子邮件,之后谷歌阻止了登录尝试,非常感谢您的帮助。 我的云代码如下

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 已采纳

如果您尝试在 afterSave 中保存相同的类对象,它将是递归函数。

您可以使用 beforeSave 触发器

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

  ask by Tanzim Chowdhury translate from so

未解决问题?本站智能推荐:

1回复

如何使用保存触发器之前在云代码中为用户类设置 Acl?

你好,这是我的云代码 如您所见,我正在尝试为使用 before save 处理程序注册的新用户设置 Acl,但我得到的错误是UserID must be a string 。 所以我的问题是如何为刚注册的新用户设置 acl? 谢谢
1回复

解析云代码作业功能优化

我有一份关于我正在运行的云代码的工作。 当我手动运行作业时,它似乎有效。 我认为调度在设置运行频率方面存在问题,所以我认为它与实际代码无关。 也许我错了,但很好奇是否有更有效的方法来轮询我的解析类。 我有一个应用程序,我试图在其中查找从 now() 开始的下一小时内即将到来的预订,如果有向该类中的用
1回复

Parse 的 afterSave 处理程序中的“返回”有什么意义

我对 return 关键字在 afterSave 处理程序中的用途感到困惑。 据我所知,它不会将结果返回给客户端,如果是,那么它将结果返回到哪里? Cloud Code 文档中的图片如下供参考。
2回复

解析服务器 - 如何使用云代码从服务器中删除图像文件

如何使用 Parse Cloud Code 从服务器中删除图像文件。 我正在使用 back4app.com 删除图像行后 我正在获取图像 url,然后调用一个函数来使用它的 url 删除图像 从服务器删除图像文件
2回复

即使使用主密钥,解析云代码查询也会隐藏对象

我正在使用解析服务器云函数来使用主密钥查询类。 类对象具有 ACL 以允许创建对象的用户只读。 查询给了我零结果。 但是一旦我将测试对象上的 ACL 更改为公共读/写,云函数查询就会为我提供所需的对象。 据我所知,使用主密钥我应该得到查询的对象。 有谁知道这里的问题是什么? 此处结果记录为未定义
3回复

解析服务器中没有这样的文件或目录 - 云代码

我正在使用 Parse 服务器,并且正在尝试发送带有 Html 文件的电子邮件。 问题我不太确定如何从云代码访问公共文件夹。 这是错误: ENOENT:没有那个文件或目录,打开'./public/invoice.html' 目录: fs.readFileSync("../p
1回复

发送推送通知时解析服务器云代码错误

在 back4app 上使用 Parse Cloud Code,我试图在保存对象后发送推送通知: 我收到以下错误: 错误 [ERR_HTTP_HEADERS_SENT]:在 ServerResponse.setHeader (_http_outgoing.js:526:11) 处的 Ser
2回复

在保存之前解析云代码无法确保记录是唯一的

我有一个包含两列的出勤类:用户指针和会议指针。 每个用户在一次会议中应该只有一个出席记录。 所以在beforeSave云代码触发器中,我做一个查询,看看是否存在一个现有的考勤记录。 我认为这将防止重复的出勤记录。 但是当我们模拟大量并发请求时,例如在for循环中创建50个重复的考勤记录,我们仍