解析 AfterSave 触发器进入循环
Parse AfterSave trigger going in a loop
我的保存后处理程序有问题。因此,当新用户登录时,它会检查 tProfile 和 sProfile 字段是否为空,如果是,它会为用户保存 acl,然后使用 nodemailer 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 中保存相同的 class 对象,它将是递归函数。
您可以使用 beforeSave 触发器
Parse.Cloud.beforeSave(Parse.User,async(req)=>{
let userObject = req.object;
if(userObject.isNew()){
//Your Logic
}
});
我的保存后处理程序有问题。因此,当新用户登录时,它会检查 tProfile 和 sProfile 字段是否为空,如果是,它会为用户保存 acl,然后使用 nodemailer 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 中保存相同的 class 对象,它将是递归函数。
您可以使用 beforeSave 触发器
Parse.Cloud.beforeSave(Parse.User,async(req)=>{
let userObject = req.object;
if(userObject.isNew()){
//Your Logic
}
});