【ERROR未解决】at <anonymous> name: 'ValidationException'

测试能否执行交易的时候出现了问题。

错误描述

cielo@cielo-ThinkPad-E550:~/cprogrames/HLF-Fabric-API-master$ node bn-factory-submit-txn.js
2. Received Definition from Runtime:  csupplychain    0.0.1
{ ValidationException: Model violation in instance org.sc.product.SampleTransaction#change class org.sc.product.SampleAsset has value 00005 expected a Relationship.
    at Function.reportNotRelationshipViolation (/home/cielo/cprogrames/HLF-Fabric-API-master/node_modules/composer-common/lib/serializer/resourcevalidator.js:469:15)
    at ResourceValidator.checkRelationship (/home/cielo/cprogrames/HLF-Fabric-API-master/node_modules/composer-common/lib/serializer/resourcevalidator.js:389:31)
    at ResourceValidator.visitRelationshipDeclaration (/home/cielo/cprogrames/HLF-Fabric-API-master/node_modules/composer-common/lib/serializer/resourcevalidator.js:371:18)
    at ResourceValidator.visit (/home/cielo/cprogrames/HLF-Fabric-API-master/node_modules/composer-common/lib/serializer/resourcevalidator.js:76:25)
    at RelationshipDeclaration.accept (/home/cielo/cprogrames/HLF-Fabric-API-master/node_modules/composer-common/lib/introspect/decorated.js:65:24)
    at ValidatedResource.setPropertyValue (/home/cielo/cprogrames/HLF-Fabric-API-master/node_modules/composer-common/lib/model/validatedresource.js:74:15)
    at main (/home/cielo/cprogrames/HLF-Fabric-API-master/bn-factory-submit-txn.js:78:17)
    at /home/cielo/cprogrames/HLF-Fabric-API-master/bn-connection-util.js:42:13
    at <anonymous> name: 'ValidationException' }

debug后发现错误地方:
transaction的初始化有问题。

    // 4. Create an instance of transaction
    let options = {
        generate: false,
        includeOptionalFields: false
    }
    let assertid = "00005";
    let transaction = factory.newTransaction(namespace,transactionType,assertid,options);

    // 5. Set up the properties of the transaction object
    transaction.setPropertyValue('asset','00005');
    transaction.setPropertyValue('newowner', '0002');
    transaction.setPropertyValue('newValue' , newValue);

查看newTransaction的定义,首先删去了assertid这一段。
改为:

let options = {
        generate: false,
        includeOptionalFields: false
    }
    let transaction = factory.newTransaction(namespace,transactionType,options);

    // 5. Set up the properties of the transaction object
    transaction.setPropertyValue('asset','00005');
    transaction.setPropertyValue('newowner', '0002');
    transaction.setPropertyValue('newValue' , newValue);

报错信息:

cielo@cielo-ThinkPad-E550:~/cprogrames/HLF-Fabric-API-master$ node bn-factory-submit-txn.js2. Received Definition from Runtime:  csupplychain    0.0.1
Error: Invalid or missing identifier for Type SampleTransaction in namespace org.sc.product
    at Factory.newResource (/home/cielo/cprogrames/HLF-Fabric-API-master/node_modules/composer-common/lib/factory.js:88:19)
    at Factory.newTransaction (/home/cielo/cprogrames/HLF-Fabric-API-master/node_modules/composer-common/lib/factory.js:227:32)
    at main (/home/cielo/cprogrames/HLF-Fabric-API-master/bn-factory-submit-txn.js:74:31)
    at /home/cielo/cprogrames/HLF-Fabric-API-master/bn-connection-util.js:42:13
    at <anonymous>

改成

var assertid = "00001";
    var newuserid = '0002';
    let transaction = factory.newTransaction(namespace,transactionType);

    // 5. Set up the properties of the transaction object
    transaction.newowner=bnDef.getFactory().newRelationship(namespace,'SampleParticipant',newuserid);
    transaction.asset=bnDef.getFactory().newRelationship(namespace,'SampleAsset',assertid);
    transaction.setPropertyValue('newValue' , 'change');

报错

cielo@cielo-ThinkPad-E550:~/cprogrames/csupplychain/lib$ node bn-factory-submit-txn.js
2. Received Definition from Runtime:  csupplychain    0.0.1
Error: Error trying invoke business network with transaction id 8a8cc2881d1c306407eeb426f6136be533c2811894766351b021133564d0e4ad. Error: No valid responses from any peers.
Response from attempted peer comms was an error: Error: transaction returned with failure: ValidationException: Instance org.sc.product.SampleEvent#8a8cc2881d1c306407eeb426f6136be533c2811894766351b021133564d0e4ad#0 missing required field newowner
    at HLFConnection.invokeChainCode (/home/cielo/cprogrames/csupplychain/lib/node_modules/composer-connector-hlfv1/lib/hlfconnection.js:1117:30)
    at <anonymous>

错误主体

应该是transaction的值的问题。
但是这个应该怎么赋值呢?好像似乎transaction里面不能有asset和participant,但是初始代码里面是有的……别的例子倒是没有……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值