Расширение / добавление методов в Parse.User - PullRequest
0 голосов
/ 15 января 2019

Пытается найти полный пример расширения (добавления функциональности) Parse.User. Существует много возможностей для расширения других объектов, но кажется, Parse.User (а также Parse.Role и Parse.Installation) - особые исключения.

Есть несколько SO-сообщений с ответами, но, к сожалению, они ссылаются на старый сайт parse.com, который не отображается на новом сайте.

Допустим, у нас есть дополнительное поле в таблице / классе User с именем IsAdmin, и я хочу добавить дополнительный метод для проверки этого поля (Да, можно использовать Parse.User.getCurrent().get('IsAdmin), но это только пример) , Насколько я могу судить, хотя и с фрагментами примеров здесь и там, я «думаю», это выглядит примерно так:


/**
 * I "think" you need this. Docs don't explain how its fully used
 */
Parse.User.allowCustomUserClass(true);

export class User extends Parse.User {

  constructor() {
    super('User');
  }

  isThisUserAnAdmin(): boolean {
    return !(!this.get('IsAdmin));
  }
}

Parse.Object.registerSubclass('User', User);

/**
 * Then I want to use it and call specific 'Parse.User' superclass
 * functions + get the actual `User` model and NOT the `Parse.User`
 */
const makeAnAdmin = async (email: string, password: string): Promise<User> => {
  return User.signUp(email, password,
    {
      email: email,
      isAdmin: false
    }
  );
}

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

1 Ответ

0 голосов
/ 24 января 2019

Я использую код ниже для управления моими пользователями. Я могу увидеть JSON с результатом после использования метода входа или регистрации. Я надеюсь, что код ниже работает для вас.

Parse.User.allowCustomUserClass(true);

export class User extends Parse.User {
  email: string;
  password: string;
  isAdmin: string;

  constructor() {
    super('_User');
  }

  doLogin(email: string, password: string) {
    Parse.User.logIn(email,  password).then(object => {
      console.log(object);
      this.isAdmin = object.get('isAdmin');
    }).catch(console.error);
  }

  doSignUp(username: string, email: string, password: string) {
    return makeAnAdmin(email, password);
  }

}

Parse.Object.registerSubclass('User', User);

const makeAnAdmin = async (email: string, password: string): Promise<User> => {
  return Parse.User.signUp(email, password,
    {
      email: email,
      isAdmin: false
    }
  );
}

Если это все еще не работает, вставьте сюда сообщение, с которым вы сталкиваетесь:)

...