Создать пустой профиль, когда пользователь регистрируется - PullRequest
1 голос
/ 22 февраля 2020

Я знаю, что этот вопрос уже задавался здесь раньше, но мне нужно знать, что-то с этим сделал анализ. Моя пользовательская таблица по умолчанию имеет поле указателя на класс 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);
    });

Это просто не работает и приводит к тайм-ауту. Есть ли способ создать профиль пользователя перед сохранением и связать его с таблицей пользователей? Спасибо

ОБНОВЛЕНИЕ

Это рабочий код.

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

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

После еще нескольких экспериментов я пришел к выводу, что сохранение не рекомендуется для создания профиля пользователя. При регистрации, скажем, имя пользователя или адрес электронной почты уже существует, тогда регистрация не происходит, но профиль сохраняется независимо. Поэтому я бы посоветовал против этого

0 голосов
/ 26 февраля 2020

Или вы можете использовать этот код.

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

  }

});
...