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

Create a blank profile when user signs up

我知道这个问题以前在这里被问过一次,但我需要知道 parse 是否对此做了任何处理。 我的默认用户 table 有一个指向 UserProfile class 的指针字段。 注册时我在下面有这个云代码。

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);
    });

这只是行不通,导致 timeout.Is 在保存之前创建用户配置文件并将其关联到用户 Table?谢谢

更新

这是工作代码。

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});

  }

});