如何从超级账本中的资产更新价值

How to update values from an asset in hyperledger

型号

asset Route identified by route_id {
  o String route_id
  o String rider_id
  o String parcel_id
}
transaction assignParcelToRider {
  o String rider_id
  o String parcel_id
}

logic.js

var assetRegistry;
var id = assignValue.rider_id;
return getAssetRegistry('org.rytle.Route').then(function(ar) {
    assetRegistry = ar;
    return assetRegistry.get(id);
}).then(function(asset) {
    asset.parcel_id = assignValue.parcel_id;
    return assetRegistry.update(asset);
});

在这里我想找到 rider_id 并在那里更新 parcel_id。但是这里找不到 rider_id.

主要是您需要通过资产标识符获取资产,在您的模型中使用 .get()rider_id 时并非如此。

此外 - 可能需要更多信息 - 但这一切都取决于 idassignValue.rider_id 获取值,我不知道它是如何定义/断言的以及它是否在范围内。但是,我可以看到 id 应该在您的功能范围内 - 但是使用正确的资产标识符,这应该有效(例如):

return getAssetRegistry('org.rytle.Route').then(function(ar) {
      return ar.get(route_id)   // or whatever you've assigned it to or txnobject.route.getIdentifier());   // ie you must get the asset by identifier
      }).then(function(asset) {
           asset.parcel_id = id;   
           return ar.update(asset);
       });                  

等等;

ps 你可以查看 sample-networks 中的一些示例(例如在 'test' 目录下)——注意这些现在使用 async / await 函数(而不是 'promises' 如上所示)与 Node 8 一起出现(并且比使用 promises 更容易编写,仅供参考)