更改Restangular对象的路径

时间:2015-01-13 20:36:32

标签: restangular

我正在使用Restangular登录我的currentUser,如下所示:

  this.login = function (credentials) {

    var loginURL = Restangular.all('logins');

    return loginURL.customPOST({ user: credentials.user, password: credentials.password })
      .then(function (res) {
         $scope.currentUser = res;
         console.log("User successfully logged in.");
      };
   };

在某些时候,currentUser可能需要使用customPUT()更新其首选项。 。 。

  this.updateUser = function(currentUser){

    return currentUser.customPUT({ user: currentUser })
      .then(function(response){
        if (typeof response.errors === 'undefined') {
          $rootScope.$broadcast(AUTH_EVENTS.updateAccount, response.data );
          console.log("Account successfully updated.");
          currentUser = response.data
        } else {
          $q.reject(response);
        }
      }, function(response){
        $q.reject(response);
      });

我的问题是我的服务器api有一条登录/退出路由(/api/logins/)和一条不同的用户更新路由(/api/users/)。

有没有办法在登录后轻松更改我的currentUser对象上的路由,以便它使用/api/users路由?

1 个答案:

答案 0 :(得分:2)

我假设

  • 您已将baseUrl(通过Restangular.setBaseUrl)设置为您的API
  • 并且大部分时间都需要路线'users'

如果这是真的,一个解决方案是获取登录返回的普通对象和re-restangularize。这看起来类似于以下代码:

    $scope.currentUser = res.plain();
    Restangular.restangularizeElement('', $scope.currentUser, 'users');

then - 登录POST的一部分中尝试此操作。之后$scope.currentUser应该是您的用户对象,但所有设置都像您一样从/users检索到它。然后,后续REST操作将使用新URL。