Javascript 用户注册时创建空白配置文件
我知道这个问题以前在这里被问过一次,但我需要知道parse是否对此做了任何事情。 我的默认用户表有一个指向UserProfile类的指针字段。 在注册时,我有下面的云代码Javascript 用户注册时创建空白配置文件,javascript,node.js,parse-platform,parse-cloud-code,back4app,Javascript,Node.js,Parse Platform,Parse Cloud Code,Back4app,我知道这个问题以前在这里被问过一次,但我需要知道parse是否对此做了任何事情。 我的默认用户表有一个指向UserProfile类的指针字段。 在注册时,我有下面的云代码 Parse.Cloud.beforeSave(Parse.User,async (request)=>{ const user = request.object; //Making a new Teacherprofile Class const Objectextension = Par
Parse.Cloud.beforeSave(Parse.User,async (request)=>{
const user = request.object;
//Making a new Teacherprofile Class
const Objectextension = Parse.Object.extend("TeacherProfile");
const teacherProfile = new Objectextension();
teacherProfile.set("name", "harry");
//Putting teacher profile pointer
user.set("tProfile",teacherProfile);
});
这不起作用,会导致超时。在保存并将其与用户表关联之前,是否仍要在上创建userprofile?谢谢
更新
这是工作代码
Parse.Cloud.beforeSave(Parse.User,async (request)=>{
const user = request.object;
//if user id does not exists
//it is a new user
if (!user.id) {
//Making a new User Profile Object
const profileObject = Parse.Object.extend("TeacherProfile");
const teacherProfile = new profileObject();
teacherProfile.set("name", "harry");
await teacherProfile.save(null,{ useMasterKey: true });
//Putting teacher profile pointer in user
user.set("tProfile",teacherProfile);
}else{
console.log('old user');
}
});
经过更多的实验后,我得出结论,对于用户配置文件的创建,在保存之前是不可取的。 当注册时,假设用户名或电子邮件已经存在,那么注册不会发生,但是配置文件会被保存。
因此,我建议您不要使用此代码
Parse.Cloud.afterSave(Parse.User, (request) => {
if(!request.original){
//Object saved for first time. This codes will work just first time. And will not work after object saved again.
const user = request.object;
const profileObject = Parse.Object.extend("TeacherProfile");
const teacherProfile = new profileObject();
teacherProfile.set("name", "harry");
await teacherProfile.save(null,{ useMasterKey: true });
//Putting teacher profile pointer in user
user.set("tProfile",teacherProfile);
user.save(null,{useMasterKey:true});
}
});
“TeacherProfile”是否有任何beforeSave或afterSave触发器?没有其他处理程序,但似乎用户中的指针存在方案不匹配,因此我认为它进入了循环,现在完全可以了:D感谢您的评论否您不能使用该代码,您将导致可怕的循环效果,因为您正在用户类的afterSave处理程序中保存用户类,所以此代码将无限期运行。@TanzimChowdhury这就是为什么我使用if(!request.original){}正如我所说,它不起作用,我的代码中也有限制性逻辑,但遗憾的是它进入了递归循环