无法访问错误响应正文中的属性"消息" |超级账本结构



说明

使用节点,我发出一个典型的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相同(。

所以基本上 --errerr.messageerr.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

相关内容

最新更新