Javascript 用户注册时创建空白配置文件

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是否对此做了任何事情。 我的默认用户表有一个指向UserProfile类的指针字段。 在注册时,我有下面的云代码

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){}正如我所说,它不起作用,我的代码中也有限制性逻辑,但遗憾的是它进入了递归循环