Поведение rmbedding конкретной версии документа неожиданно

Я довольно успешно использую Python REST API Framework, и я благодарю его авторов за его предоставление.

Согласно (скудной) документации возможно применение встраивания определенной версии. Рассмотрим следующий пример, напрямую скопированный из документа по адресу http://python-eve.org/.

 DOMAIN = {
     'emails': {
         'schema': {
             'author': {
                 'type': 'dict',
                 'schema': {
                     '_id': {'type': 'objectid'},
                     '_version': {'type': 'integer'}
                 },
                 'data_relation': {
                     'resource': 'users',
                     'field': '_id',
                     'embeddable': True,
                     'version': True,
                 },
             },
             'subject': {'type': 'string'},
             'body': {'type': 'string'},
         }
     }

Здесь «автор» — это схема с полями «_id» и «_version» в каждом документе электронной почты.

A. Предполагая, что мой внешний интерфейс использует Javascript, когда я применяю оператор

Restangular.one('emails', some-id).get({embedded: {"author": 1}}).then(

чтобы получить документ электронной почты с заданным идентификатором и запросить встраивание документа автора, я получаю последнюю версию автора, а не версию, указанную в поле _version автора документа электронной почты. Почему бы не уважать версию? Есть ли способ через какую-то волшебную конфигурацию принудительно встроить указанную там версию?

BW, обходной путь довольно прост — просто отключите это автоматическое встраивание и вместо этого сначала извлеките документ электронной почты, а затем извлеките конкретную версию автора, но это противоречит здравому смыслу.

B. В руководстве указан атрибут конфигурации под названием «embedded_fields», который указывает, и я цитирую, список полей, для которых встроенная сериализация ресурсов включена по умолчанию. А может ожидать, что даже если в этом поле указано, что автор должен быть встроен по умолчанию, оператор

Restangular.one('emails', some-id).get({embedded: {"author": 0}}).then(

переопределит значение по умолчанию. Ну, это не так. Опять же, почему? или, возможно, это просто ошибка.


person Efi Fogel    schedule 10.02.2016    source источник


Ответы (1)