Ошибка при попытке вызвать бизнес-сеть.требуемое поле не заполнено - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу отправить запрос POST от Node-RED на сервер Composer REST.

Ошибка при попытке вызвать бизнес-сеть. Ошибка: нет действительных ответов от каких-либо одноранговых узлов. Ответ от предпринятых одноранговых коммуникаций был ошибкой: Ошибка: 2 НЕИЗВЕСТНО: ошибка при выполнении цепного кода: транзакция возвращена с ошибкой: ValidationException: Экземпляр org.acme.shipping.perishable.AccelReading # c8c829bfd738d7ec63180c52f040f0404b2324b6108408102b8408402

Детская площадка / Test

{
  "$class": "org.acme.shipping.perishable.AccelReading",
  "accel_x": 0,
  "accel_y": 0,
  "accel_z": 0,
  "latitude": "",
  "longitude": "",
  "readingTime": "",
  "shipment": "resource:org.acme.shipping.perishable.Shipment#4879"
}

Node-RED URL

http://...:31090/api/AccelReading?data=
{"$class":"org.acme.shipping.perishable.AccelReading",
"accel_x":23264,
"accel_y":-20960,
"accel_z":-2448,
"readingTime":"2018-02-14T15:16:44.284Z",
"latitude":"51",
"longitude":"11",
"shipment":"resource:org.acme.shipping.perishable.Shipment#320022000251363131363432"
}

Payload enter image description here

POST-запрос почтальона со всеми параметрами, определенными как пары ключ / значение в теле

enter image description here

Ответ

{
    "error": {
        "statusCode": 422,
        "name": "ValidationError",
        "message": "The `AccelReading` instance is not valid. Details: `shipment` can't be blank (value: undefined).",
        "details": {
            "context": "AccelReading",
            "codes": {
                "shipment": [
                    "presence"
                ]
            },
            "messages": {
                "shipment": [
                    "can't be blank"
                ]
            }
        },
        "stack": "ValidationError: The `AccelReading` instance is not valid. Details: `shipment` can't be blank (value: undefined).\n    at /home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/dao.js:398:12\n    at AccelReading.<anonymous> (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/validations.js:578:11)\n    at AccelReading.next (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/hooks.js:93:12)\n    at AccelReading.<anonymous> (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/validations.js:575:23)\n    at AccelReading.trigger (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/hooks.js:83:12)\n    at AccelReading.Validatable.isValid (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/validations.js:541:8)\n    at /home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/dao.js:394:9\n    at doNotify (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/observer.js:155:49)\n    at doNotify (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/observer.js:155:49)\n    at doNotify (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/observer.js:155:49)\n    at doNotify (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/observer.js:155:49)\n    at Function.ObserverMixin._notifyBaseObservers (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/observer.js:178:5)\n    at Function.ObserverMixin.notifyObserversOf (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/observer.js:153:8)\n    at Function.ObserverMixin._notifyBaseObservers (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/observer.js:176:15)\n    at Function.ObserverMixin.notifyObserversOf (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/observer.js:153:8)\n    at Function.ObserverMixin._notifyBaseObservers (/home/composer/.npm-global/lib/node_modules/@ibmblockchain/composer-rest-server/node_modules/loopback-datasource-juggler/lib/observer.js:176:15)"
    }
}

Почтальон / JSON

enter image description here

1 Ответ

0 голосов
/ 18 сентября 2018

Проблема заключалась в том, что требовалось обновить сервер Composer REST, чтобы отразить нужные поля, появляющиеся в Swagger. Это означает, что нужно удалить контейнер сервера REST и заново создать его с использованием внутреннего адреса 192.x - шаги в Kubernetes:

bx cs cluster-config blockchain
export KUBECONFIG=/Users/<name>/.bluemix/plugins/container-service/clusters/blockchain/kube-config-mil01-blockchain.yml
./delete/delete_composer-rest-server.sh
./create/create_composer-rest-server.sh --business-network-card admin@perishable-network

Прикрепление снимка экрана того, как должен выглядеть POST (после обновления) для бизнес-сети IoT, указанной как enter image description here

...