我的区块链上有一个“生产记录”资产,它与“订单”资产有关系。在查询语言中,我找不到使用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
}
试试这个
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.
)