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

问题描述 投票:1回答:1

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

我曾尝试使用“order.orderId = _ $ orderId”,但这似乎不起作用,我现在有

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

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

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

asset ProductionRecord identified by productionId{
    o String productionId
    o ProductionDetails productionDetails
    --> Order order 
    --> Manufacturer factory
}

asset Order identified by orderId {
  o String orderId
  o GarmentDetails garmentDetails
  o OrderStatus orderStatus
  --> Customer orderer
}
hyperledger blockchain hyperledger-composer
1个回答
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.

© www.soinside.com 2019 - 2024. All rights reserved.