Hyperledger Composer查询语言:如何使用资产ID从关系中获取资产?

时间:2019-04-03 15:15:37

标签: hyperledger blockchain hyperledger-composer

我的区块链上有一个“生产记录”资产,该资产与“订单”资产有关系。在查询语言中,我找不到使用orderId返回订单的方法。基本思想是我想要一个API端点,该端点返回特定订单的生产记录。

我尝试使用“ order.orderId = _ $ orderId”,但这似乎不起作用,我目前拥有

function transformEmployeeData(array)
{  
  var output = [];

  for (var i = 0; i < array.length; i++)
  {
    var obj = {};

    for (var j = 0; j < array[i].length; j++)
    {
      obj[array[i][j][0]] = array[i][j][1];
    }

    output.push(obj);
  }

  return output;
}

但是这给了我一个语法错误。

请参阅我的模型的代码示例。

WHERE (order == (SELECT org.garment.supplychain.Order 
       WHERE (_$orderId = org.garment.supplychain.Order.orderId)))

1 个答案:

答案 0 :(得分:0)

尝试

query ProductionRecordByOrder {
  description: "Get all the production records referring to the same order"
  statement:
    SELECT your.namespace.ProductionRecord 
    WHERE ( order == _$inputOrder )
}

,当您调用此查询时,您将需要传递完全限定的标识符,例如

// you need to get the order object here before the query
// for example, the order might be a property in the transaction
var order = tx.order;

var ProductionRecord = await query( "ProductionRecordByOrder", {inputOrder: `resource:${order.getFullyQualifiedIdentifier()}`} );

本质上也是最重要的一点是,输入内容应类似于以下内容

resource:your.namespace.Order#some_order_id

我假设您使用的是名称空间,但如果不使用,请删除名称空间(即your.namespace.部分)