Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象';s属性未定义_Javascript_Hyperledger Composer - Fatal编程技术网

Javascript 对象';s属性未定义

Javascript 对象';s属性未定义,javascript,hyperledger-composer,Javascript,Hyperledger Composer,玩弄汽车拍卖的样本网络。 我不知道为什么“Offer”事务会显示所有属性,但“AmendOffer”事务显示属性以$as未定义开头 有没有办法将交易从“AmendOffer”转换为“Offer”,我试图复制一份“AmendOffer”,然后删除复制的交易上的属性“oldTransactionID”,使其与“Offer”交易相同 abstract transaction OfferTrans { o Double bidPrice --> VehicleListing listing

玩弄汽车拍卖的样本网络。 我不知道为什么“Offer”事务会显示所有属性,但“AmendOffer”事务显示属性以$as未定义开头

有没有办法将交易从“AmendOffer”转换为“Offer”,我试图复制一份“AmendOffer”,然后删除复制的交易上的属性“oldTransactionID”,使其与“Offer”交易相同

abstract transaction OfferTrans {
  o Double bidPrice
  --> VehicleListing listing
  --> Member member
}

transaction Offer extends OfferTrans {
}

transaction AmendOffer extends OfferTrans {
  o String oldTransactionID
}

假设您有TP函数来匹配您的事务,并使用您的模型,在Composer Playerd中,您将获得如下所示的事务(您建模的事务)-在Historian中

{
 "$class": "org.acme.vehicle.auction.Offer",
 "bidPrice": 10,
 "listing": "resource:org.acme.vehicle.auction.VehicleListing#L1",
 "member": "resource:org.acme.vehicle.auction.Member#1",
 "transactionId": "d133abab-cd96-4f15-ac06-ca7a065f2e84",
 "timestamp": "2018-06-04T10:38:17.042Z"
}

{
 "$class": "org.acme.vehicle.auction.AmendOffer",
 "oldTransactionID": "3333",  // whatever
 "bidPrice": 0,
 "listing": "resource:org.acme.vehicle.auction.VehicleListing#L1",
 "member": "resource:org.acme.vehicle.auction.Member#1",
 "transactionId": "3576a2f2-6264-4490-9b79-ef0d612ed07a",
 "timestamp": "2018-06-04T10:37:50.854Z"
}
如果不想将“oldTransactionId”存储为必填字段,只需在模型文件中将其设置为可选字段即可

transaction AmendOffer extends OfferTrans {
  o String oldTransactionID optional
}
例如,以下内容将作为
AmendOffer
事务处理

{
  "$class": "org.acme.vehicle.auction.AmendOffer",
  "bidPrice": 10,
  "listing": "resource:org.acme.vehicle.auction.VehicleListing#L1",
  "member": "resource:org.acme.vehicle.auction.Member#1"
}

如果您想更新该示例网络中的
Offers[]
数组(如今天所存在的),您显然需要提供相应的事务代码来进行更新。

感谢您的回复!在订单有修改的情况下,我希望将修改保存为“要约”交易-因此不应保存旧的TransactionID。我一直在尝试深度复制传入的事务并删除属性“oldTransactionID”,我可能在深度复制过程中遗漏了一些内容,并获得了未定义的值。我已更新了答案。在我看来,您只需要将属性
设置为可选属性
谢谢Paul!我明白你的意思,但我确实希望在AmendOffer事务中始终传递旧的TransactionID。有没有办法将此转换为要约交易。假设原始交易不需要修改,相反,我想放置一个新的要约交易。这是一个区块链(具有部署的业务网络/智能合同)。交易记录被添加到分类账中。分类账是交易的历史记录/年表,用于更新资产或参与者(在业务网络中)的状态,以获取(资产/参与者)的世界状态,该状态保存任何给定键的最后已知提交值-链交易日志的索引视图(及其报价或修正者的历史记录)。你不能“修改”交易——这是区块链的全部意义所在。现在谈谈你的问题:(续)我想你的意思是对“要约”(而不是订单)的修正。如果您愿意,您可以/可以拥有一个“报价”交易类别(IMO),并将报价交易ID的历史记录(交易本身已在分类账中)和报价金额等保存在可拍卖资产中。很容易看出资产上的“交易”修改了以前的交易(如果有)。我觉得你把事情弄得比实际需要的更复杂了。