在Hyperledger Composer中检索资产数组

时间:2017-10-30 10:05:08

标签: hyperledger hyperledger-composer

我定义了这个模型:

asset Ask identified by askId
{
    o String askId
    o String title
    o String[] options
    o Integer[] votes
}


asset Poll identified by pollId
{
    o String pollId
    --> Ask[] asks
}

当我试图获得问题字段时,我无法得到任何东西。这是测试代码:

count.poll.asks.forEach(function(ask)
{
       alert("Ask:" +ask);
});

alert(count.poll)检索Relationship {id=org.acme.democracity.Poll#pollId:poll1111},以便在其中有一个有效的对象。

我甚至不确定是否可以像我一样声明资产数组。

1 个答案:

答案 0 :(得分:1)

我试图重新创建你的模型并制作这个功能,这就是我所拥有的:

asset Ask identified by askId
{
    o String askId
    o String title
    o String[] options
    o Integer[] votes
}


asset Poll identified by pollId
{  
    o String pollId
    --> Ask[] asks
}

transaction count {
    --> Poll pollId
}

我的事务处理器功能看起来像:

/**
 * count transaction
 * @param {org.sample.count} count
 * @transaction
 */
function count(count) {
  count.pollId.asks.forEach(function(ask) {
    var serializer = getSerializer()
    var serializer = getSerializer();
    var jsonObj = serializer.toJSON(ask);
    console.log("Ask: ", ask);
    console.log("Ask jsonObj: ", jsonObj);    
  });
}

使用此功能,我可以创建Ask,然后创建Poll,我可以将Poll提供给交易。查看我的链码日志,我可以看到我的obj已正确打印

Ask:  Resource {id=org.sample.count.Ask#striaweng}
Ask jsonObj:{$class:"org.sample.count.Ask",askId:"striaweng",title:"striawefawefng",options:["stawefring","stawefring","stawefring"],votes:[0,2,3,4,5]}

也许尝试一下,看看它是否有帮助。确保您输入正确的Asset并引用正确的子属性。