我正在使用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
路由?
答案 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。