Как настроить $resource для разных типов серверов
Нужно иметь три разных ресурсных фабрики $resource для разных типов серверов. По-сути это должны быть три варианта одного ресурса с разными настройками (напр., $resourceSQL, $resourceMongo и т.п.). Как это сделать?
P.S. Или можно сделать что-то типа $resource.SQL, $resource.Mongo, добавив методы подменяющие DEFAULT_ACTIONS |
или я чего то не понимаю, или по аналогии:
app
.config(function( $interpolateProvider ) {
$interpolateProvider.startSymbol( '[[' ).endSymbol( ']]' );
})
|
Цитата:
P.S. Restangular'е это выглядит так:
// Restangular returns promises
Restangular.one('users').getList() // GET: /users
.then(function(users) {
// returns a list of users
$scope.user = users[0]; // first Restangular obj in list: { id: 123 }
})
// Later in the code...
// Restangular objects are self-aware and know how to make their own restful requests
$scope.user.getList('cars'); // GET: /users/123/cars
// You can also use your own custom methods on Restangular objects
$scope.user.sendMessage(); // POST: /users/123/sendMessage
// Chain methods together to easily build complex requests
$scope.user.one('messages', 123).one('from', 123).getList('unread');
// GET: /user/123/messages/123/from/123/unread
|
В общем, ничего лучше этого не придумал
//Обертка ресурса
.factory('res', function ($resource) {
return {
sql: function (url, paramDefaults, actions) {
var actionDefaults = {
add: {method: 'PUT'},
query: {method: 'POST', isArray: true}
}
return $resource(url, paramDefaults, angular.extend(actionDefaults, actions));
},
mongo: function (url, paramDefaults, actions) {
var actionDefaults = {
add: {method: 'PUT'}
}
return $resource(url, paramDefaults, angular.extend(actionDefaults, actions));
}
}
})
.factory('Users', function (res) {
return res.mongo('action.php/user/:userId', {userId: '@id'})
})
.factory('City', function (res) {
return res.sql('action.php/city/:cityId', {cityId: '@id'})
})
|
т.е. у тебя в одном приложении два типа сервера. Правильно я понял?
|
Вопрос какую базу данных использовать не должен касаться клиента ни при каких условиях и никогда.
Сервер работает с базой данных и предоставляет rest api которым может пользоваться ресурс ангуляра, поэтому какая база используется это проблема исключительно сервера. Клиент не должен ничего знать о тонкостях взаимодействия с базой данных. Клиента не интересует также какая это именно база и существует ли она вообще. Все что глубже rest api для клиента является черным ящиком. Уж лучше бы нерв был прав и речь шла о двух серверах, тогда можно было бы как то попробовать оправдать такой косяк. Но если речь об одном сервере, то разделение между базами данных на клиенте нужно немедленно устранить и переложить эту задачу на серверную часть. З.Ы. Исключением мог бы быть только редактор баз данных работающий с различными типами баз данных. |
Цитата:
Цитата:
|
Цитата:
Откуда у тебя три сервера на один клиент, теряюсь в догадках )) |
Это не у меня, это на работе) https-сервер для авторизации, май-скюэль и монго сервера для текста и видео (много медиаконтента)
|
| Часовой пояс GMT +3, время: 07:15. |