Fiware Orion пакетная копия - PullRequest
       7

Fiware Orion пакетная копия

1 голос
/ 06 марта 2019

Я использую APPEND_STRICT, но у меня проблемы с пониманием определенной концепции.

Например, у меня есть одна сущность в Fiware Orion (уже создана), и я хочу создать, скажем, 1000 сущностей в пакете, используя APEND_STRINCT (v2 / op / update).

В 1000 сущностях есть 1 дубликат (я упоминаю, что он уже находится в Орионе).

Так что это правильно, Орион выдаст ошибку 422 без какой-либо информации в терминах идентификатора сущности, которая уже существует, об ошибке, рассказывающей об атрибутах сущности (я понимаю, почему это концепция APPEND_STRICT), но показав, что она будет действительно помочь.

И еще одна часть: если дублирующая сущность находилась на позиции 400, то Orion отправляет ошибку, но продолжает записывать оставшиеся сущности, это действительно сложно сделать, потому что я не могу знать, когда завершена полная запись, и должен показать какой-то ответ пока Орион все еще работает с ними в фоновом режиме.

Верны ли мои предположения и можно ли что-то сделать, чтобы этого избежать, что я не заметил?

Спасибо.

Редактировать

Сообщение об ошибке:

{ error: 'Unprocessable',
    description: 'one or more of the attributes in the request already exist: 
    [ family, serialNumber, refSortingType, description, refType, storedWasteOrigin, location, address, fillingLevel, cargoWeight, temperature, methaneConcentration, regulation, responsible, owner, dateServiceStarted, dateLastEmptying, nextActuationDeadline, actuationHours, openingHours, dateLastCleaning, nextCleaningDeadline, refDepositPointIsle, status, color, image, annotations, areaServed, dateModified, refDevice ]' } } }

Пример запроса:

{ method: 'POST',
 headers:
  { 'Content-Type': 'application/json',
    'Fiware-Service': 'waste4think',
    'Fiware-ServicePath': '/d',
    'X-Auth-Token': 'DssfKZe82e1dyJof416EmrQPdFQ3QK1' },
 uri: 'http://localhost:1026/v2/op/update',
 body: { actionType: 'APPEND_STRICT', entities: [Array] }

     {"actionType":"APPEND_STRICT","entities":[{"id":"xxx","type":"xxx","family":{"value":"Agent","type":"String","metadata":{}},"serialNumber":{"value":"","type":"String","metadata":{}},"refSortingType":{"value":"SortingType:2","type":"String","metadata":{}},"description":{"value":"","type":"String","metadata":{}},"refType":{"value":"DepositPointType:0","type":"String","metadata":{}},"storedWasteOrigin":{"value":"","type":"String","metadata":{}},"location":{"value":{"type":"Point","coordinates":[xxx]},"type":"geo:json"},"address":{"value":"xxxxx.","type":"String","metadata":{}},"fillingLevel":{"value":0,"type":"Float","metadata":{"unit":{"value":"C62","type":"String"}}},"cargoWeight":{"value":0,"type":"Float","metadata":{"unit":{"value":"KGM","type":"String"}}},"temperature":{"value":0,"type":"Float","metadata":{"unit":{"value":"CEL","type":"String"}}},"methaneConcentration":{"value":0,"type":"Float","metadata":{"unit":{"value":"59","type":"String"}}},"regulation":{"value":"Municipal association","type":"String","metadata":{}},"responsible":{"value":"","type":"String","metadata":{}},"owner":{"value":"xxx","type":"String","metadata":{}},"dateServiceStarted":{"value":"","type":"String","metadata":{}},"dateLastEmptying":{"value":"","type":"String","metadata":{}},"nextActuationDeadline":{"value":"","type":"String","metadata":{}},"actuationHours":{"value":[],"type":"List","metadata":{}},"openingHours":{"value":[],"type":"List","metadata":{}},"dateLastCleaning":{"value":"","type":"String","metadata":{}},"nextCleaningDeadline":{"value":"","type":"String","metadata":{}},"refDepositPointIsle":{"value":"","type":"String","metadata":{}},"status":{"value":"ok","type":"String","metadata":{}},"color":{"value":"","type":"String","metadata":{}},"image":{"value":"","type":"String","metadata":{}},"annotations":{"value":"","type":"String","metadata":{}},"areaServed":{"value":"","type":"String","metadata":{}},"dateModified":{"value":"","type":"String","metadata":{}},"refDevice":{"value":"","type":"String","metadata":{}}}]}

Что касается запроса, я разделил часть сообщения и часть тела. Как вы можете видеть, по ошибке msg невозможно узнать, какая сущность вызвала это

1 Ответ

0 голосов
/ 14 марта 2019

Я думаю, что функциональность такая, как вы описали.Орион отвечает со списком атрибутов, которые уже существуют, но не к какой сущности они принадлежат.Подобный ответ может быть, вероятно, более полезным:

'one or more of the attributes in the request already exist: 
   entity23: [ family, serialNumber], entity 42: [refSortingType, description]'

с некоторым ограничением (например, до 20 объектов), чтобы исключить слишком большие ответы.

Если вы думаете, что реализация чего-то подобного можетпожалуйста, создайте новый выпуск в репозитории Orion по этому поводу, пожалуйста.

Некоторые дополнительные комментарии:

  • APPEND_STRICT устарело.Правильное ключевое слово: appendStrict.
  • Относительно "Orion send error but continue to write remaining entities, this is really hard to manage because I cannot know when a total write is done and have to show some response while Orion still works on them in the background".Орион не отвечает, пока не завершит обработку всего пакета в запросе POST /v2/op/entity.Таким образом, ваш клиент REST может быть уверен, что когда ответ получен, все было обработано (хотя эта обработка может включать ошибки из-за дублированных атрибутов в некоторых объектах, как мы уже обсуждали).Вы испытали другое поведение?В таком случае, как ты это получил?(это Орион ведет себя таким образом, что это может быть ошибка, и я хотел бы знать об этом, чтобы отладить его).
...