0

次のユーザーモデルがあります。

var UserModel = Backbone.Model.extend({
  urlRoot: 'user',
  defaults: {
    fullName: null,
    email: null,
    password: null
  }
});

これで、CRUD (サインアップ、情報の更新、削除、およびユーザーの取得) ができるようになりましたが、次のことはどうでしょうか。

  • パスワードをお忘れですか
  • アカウントを有効にする

これを可能にするために UserModel を拡張するにはどうすればよいですか?

4

3 に答える 3

5

私は自分で答えを得ました。したがって、もう一度、次のような非クラッド操作が必要でした。

  • POST /users/restore-password
  • POST /users/activate

解決:

function nonCrudOperation(urlSegment, requestMethod){
  return Backbone.sync.call(this, null, this, _.extend({
    url: this.url() + '/' + urlSegment,
    type: requestMethod
  }, options));
};

var UsersModel = Backbone.Model.extend({
  urlRoot: 'user',
  activate: function(options){
    return nonCrudOperation.call(this, 'activate', 'POST');
  },
  restorePassword: function(options){
    return nonCrudOperation.call(this, 'restore-password', 'POST');
  }
});
于 2012-09-26T21:23:51.543 に答える
3

ログインをエンドポイントとしてセッション モデルを分離し、これを使用してログイン トランザクションを完了する方が適切な場合があります。これらの行に沿ったもの:

var UserSessionModel = Backbone.Model.extend({
  urlRoot: 'users/login',
  defaults: {
    email: null,
    password: null
  }
});

ログインに成功したら、セッションを実際のユーザーに交換できます。

var session = new UserSessionModel({ username: 'foo', password: 'bar' }),
    user;

session.save({ 
  success: function (attrs) {
    user = new UserModel(attrs);
  }
});
于 2012-09-26T20:42:38.240 に答える
0

組み込みのメソッドを補完し、通常の呼び出しを行う独自のメソッドを作成しても問題はありfetchませsave$.ajax。たとえば、専用サーバーURIを定期的に実行してパスワードをリセットし、それに応じてユーザーインスタンスを更新する、独自のメソッドresetとメソッドを導入することはまったく問題ありません。activate$.post

于 2012-09-26T21:36:40.907 に答える