说明
使用节点,我发出一个典型的API POST请求,我有一个带有响应变量的.catch
块,例如err
。出错时,响应正文将按原样返回(从Hyperledger Composer REST应用中可以看到(
{
"error": {
"statusCode": 500,
"name": "Error",
"message": "error trying invoke chaincode. Error: chaincode error (status: 500, message: Error: Payment needs to be of positive value)",
"stack": "Error: error trying invoke chaincode. Error: chaincode error (status: 500, message: Error: Payment needs to be of positive value)n at _initializeChannel.then.then.then.then.catch (/home/ubuntu/.nvm/versions/node/v6.11.1/lib/node_modules/composer-rest-server/node_modules/composer-connector-hlfv1/lib/hlfconnection.js:839:34)"
}
}
我的问题
我只是尝试从上面的响应中获取message
属性并将其发送到 UI。但奇怪的是,err.message
并没有给我我在message
中看到的值,而是返回整个响应正文(与err.stack
相同(。
所以基本上 --err
、err.message
和err.stack
返回相同的输出
我如何最终只获取属性中的值,比如message
?
附注:
err.statusCode
确实返回正确的值,即。"500".
err.name
返回"状态代码错误"(不是我在响应中看到的"错误"(
好的,所以虽然不是真正的Hyperledger Composer问题 - 你可以试试它是response.getBody((吗?这只是一个示例,而不是要使用的代码片段
var finalHost = "yoururl";
var r = new sn_ws.RESTMessageV2();
r.setHttpMethod("get");
r.setEndpoint(finalHost);
//r.setQueryParameter("locatenow", "true");
r.setBasicAuth(username,password);
var response = r.execute();
var responseBody = response.getBody();
// If response is in json format, directly you can send to client.
// If not then convert it.
return responseBody;
// On client side
var newoptions = JSON.parse(jsonstring);
// returned resp.
您可能会考虑像 Restify 这样的东西在 UI 端进行错误处理? 请参阅此处底部的自述文件 https://github.com/restify/errors/blob/master/README.md -> https://www.npmjs.com/package/restify-errors - 在此处查看此 S/O