更改 Restangular 对象的路径

Change the route for a Restangular object

我正在使用 Restangular 像这样登录我的当前用户:

  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 有一条用于 logins/outs (/api/logins/) 的路由和一条用于用户更新 (/api/users/) 的不同路由。

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

我假设

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

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

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

在登录 POST 的 then 部分试试这个。之后 $scope.currentUser 应该是您的用户对象,但所有设置就像您从 /users 中检索到的一样。随后的 REST 操作将使用新的 URL.