Hyperledger Composer 中的交易函数 return 类型
Transaction function return type in Hyperledger Composer
我在事务函数定义中使用@return(MyConcept),即在 cto 文件中。
基于交易功能中的某些条件,我希望 return 类型是动态的,即有时它可能 return MyConcept1,有时可能是 MyConcept2,有时甚至是 null。
我怎样才能做到这一点?
使用一个'master'概念来容纳其他可选概念
示例:
participant Publisher identified by id {
o String id
}
asset myAsset identified by id {
o String id
o String value
}
concept MyConcept1 {
o String value
}
concept MyConcept2 {
o String value optional
}
concept MyConcept {
o MyConcept1 myc1 optional
o MyConcept2 myc2 optional
}
@returns(MyConcept)
transaction myTransaction {
--> myAsset
etc
}
我的交易可以return您设置的概念中的任何内容
例如
/**
* Handle a transaction that returns a concept.
* @param {org.sample.MyTransaction} transaction The transaction.
* @returns {org.sample.MyConcept} The concept.
* @transaction
*/
async function myTransaction(transaction) {
// other stuff
const factory = getFactory();
// assign values
var conceptData1 = factory.newConcept('org.sample', 'MyConcept1');
conceptData1.value = transaction.myAsset.value; // etc
//
// return master (you define myConceptdata) based on what was set .. some of which could be blank
return myConceptdata;
}
我在事务函数定义中使用@return(MyConcept),即在 cto 文件中。
基于交易功能中的某些条件,我希望 return 类型是动态的,即有时它可能 return MyConcept1,有时可能是 MyConcept2,有时甚至是 null。
我怎样才能做到这一点?
使用一个'master'概念来容纳其他可选概念
示例:
participant Publisher identified by id {
o String id
}
asset myAsset identified by id {
o String id
o String value
}
concept MyConcept1 {
o String value
}
concept MyConcept2 {
o String value optional
}
concept MyConcept {
o MyConcept1 myc1 optional
o MyConcept2 myc2 optional
}
@returns(MyConcept)
transaction myTransaction {
--> myAsset
etc
}
我的交易可以return您设置的概念中的任何内容
例如
/**
* Handle a transaction that returns a concept.
* @param {org.sample.MyTransaction} transaction The transaction.
* @returns {org.sample.MyConcept} The concept.
* @transaction
*/
async function myTransaction(transaction) {
// other stuff
const factory = getFactory();
// assign values
var conceptData1 = factory.newConcept('org.sample', 'MyConcept1');
conceptData1.value = transaction.myAsset.value; // etc
//
// return master (you define myConceptdata) based on what was set .. some of which could be blank
return myConceptdata;
}