Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Как настроить $resource для разных типов серверов (https://javascript.ru/forum/angular/42671-kak-nastroit-%24resource-dlya-raznykh-tipov-serverov.html)

Shitbox2 05.11.2013 13:09

Как настроить $resource для разных типов серверов
 
Нужно иметь три разных ресурсных фабрики $resource для разных типов серверов. По-сути это должны быть три варианта одного ресурса с разными настройками (напр., $resourceSQL, $resourceMongo и т.п.). Как это сделать?

P.S. Или можно сделать что-то типа $resource.SQL, $resource.Mongo, добавив методы подменяющие DEFAULT_ACTIONS

nerv_ 06.11.2013 22:26

или я чего то не понимаю, или по аналогии:
app

    .config(function( $interpolateProvider ) {
        $interpolateProvider.startSymbol( '[[' ).endSymbol( ']]' );
    })

Shitbox2 08.11.2013 18:39

Цитата:

Сообщение от nerv_ (Сообщение 279904)
или я чего то не понимаю, или по аналогии

Не понял... И ресурс это не провайдер? его нельзя в конфиге настроить

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

Shitbox2 09.11.2013 12:14

В общем, ничего лучше этого не придумал
//Обертка ресурса
.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'})
})

nerv_ 10.11.2013 00:05

т.е. у тебя в одном приложении два типа сервера. Правильно я понял?

DjDiablo 10.11.2013 10:14

Вопрос какую базу данных использовать не должен касаться клиента ни при каких условиях и никогда.

Сервер работает с базой данных и предоставляет rest api которым может пользоваться ресурс ангуляра, поэтому какая база используется это проблема исключительно сервера. Клиент не должен ничего знать о тонкостях взаимодействия с базой данных. Клиента не интересует также какая это именно база и существует ли она вообще. Все что глубже rest api для клиента является черным ящиком.

Уж лучше бы нерв был прав и речь шла о двух серверах, тогда можно было бы как то попробовать оправдать такой косяк. Но если речь об одном сервере, то разделение между базами данных на клиенте нужно немедленно устранить и переложить эту задачу на серверную часть.

З.Ы. Исключением мог бы быть только редактор баз данных работающий с различными типами баз данных.

Shitbox2 10.11.2013 15:28

Цитата:

Сообщение от nerv_ (Сообщение 280281)
т.е. у тебя в одном приложении два типа сервера. Правильно я понял?

Цитата:

Сообщение от DjDiablo (Сообщение 280299)
Уж лучше бы нерв был прав и речь шла о двух серверах, тогда можно было бы как то попробовать оправдать такой косяк.

Вообще, три типа сервера и на каждом разные типы БД (MySQL, Mongo и еще что-то)

DjDiablo 11.11.2013 14:51

Цитата:

Сообщение от Shitbox2 (Сообщение 280334)
Вообще, три типа сервера и на каждом разные типы БД (MySQL, Mongo и еще что-то)

Как ты до жизни дошел такой )))
Откуда у тебя три сервера на один клиент, теряюсь в догадках ))

Shitbox2 12.11.2013 00:06

Это не у меня, это на работе) https-сервер для авторизации, май-скюэль и монго сервера для текста и видео (много медиаконтента)


Часовой пояс GMT +3, время: 21:06.