扩展/添加方法到 Parse.User



试图找到扩展(添加功能)Parse.User的完整示例。扩展其他对象有很多,但似乎Parse.User(以及Parse.RoleParse.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
    }
  );
}

同样,看起来很丑,但这是我能找到的大杂烩。如果文档中有一个明显的答案,也请随时告诉我,因为我整天都在为此抨击。

我使用以下代码来管理我的用户。使用登录或注册方法后,我能够看到带有结果的 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
    }
  );
}

如果仍然不起作用,请将您面临的消息粘贴到此处:)

最新更新