대출 번호가있는 작곡가에서 간단한 초인가 연쇄 코드를 만들려고합니다. 존재하는 경우 다른 자산과 연관된 자산을 업데이트하여 새 자산을 만듭니다.기존 자산 업데이트 - Hyperledger 작곡가
내 모델 파일은 다음과 같습니다
내 스크립트는 다음과 같습니다asset Loan identified by loanNum{
o String loanNum
o Double balance
}
transaction createTransaction {
o String loanNum
o Double transAmount
}
:
function createTransaction(tx) {
var NS = 'org.acme.ra';
var factory = getFactory();
var loanToUpdate
//returns all assets
return getAssetRegistry(NS + '.Loan')
.then(function(assetRegistry){
return assetRegistry.exists(tx.loanNum);
})
.then(function(exists){
if (exists) {
return getAssetRegistry(NS + '.Loan')
.then(function(assetRegistry2){
loanToUpdate = assetRegistry2.get(tx.loanNum)
loanToUpdate.balance = tx.transAmount;
return assetRegistry2
})
.then(function(updateAssetRegistry){
return updateAssetRegistry.update(loanToUpdate)//broken right here
})
}
else {
return getAssetRegistry(NS + '.Loan')
.then(function(assetRegistry2){
var newLoan =factory.newResource(NS,'Loan',tx.loanNum);
newLoan.balance = tx.transAmount;
return assetRegistry2.add(newLoan);
})
}
})
}
스크립트 요약 :
-
이
- 두 값에 공급된다 스크립트, 대출 번호 및 거래 금액입니다.
- 그러면 스크립트는 자산 등록을 반환하고 대출 번호가 이미 존재하면 적절한 bool을 반환합니다.
- False (자산 등록에 대출이 없다면), 대출 금액과 거래 잔액을 사용하여 새 자산이 생성됩니다.
- True이면 자산 레지스트리가 반환되고 .get 함수를 사용하고 결과를 스크립트 시작 부분에 생성 된 loanToUpdate 변수와 동일하게 설정합니다. 그런 다음 자산 레지스트리에서 .update (loanToUpdate) 함수를 사용하여 기존 자산을 업데이트합니다.
부울이 False 스크립트가 제대로 작동하고 새로운 자산을 생성하지만 부울이 True 때 트랜잭션이 이미 나는 오류 얻을 수있는 대출 번호가 포함되어있는 경우 "오류 :. 예상 리소스 또는 개념을"
편집 지금이 더 많은 경험을 얻고 있음을
, 내가 관계를 구축하지만, 병이 아래에있는 내 업데이트 된 기능 코드를 게시와 함께보다 쉽게 할 수 있다고 생각합니다. 수정과 코드 업데이트
:
function createTransaction(tx) {
var NS = 'org.acme.ra';
var factory = getFactory();
var loanToUpdate
//returns all assets
return getAssetRegistry(NS + '.Loan')
.then(function(assetRegistry){
return assetRegistry.exists(tx.loanNum);
})
.then(function(exists){
if (exists) {
return getAssetRegistry(NS + '.Loan')
.then(function(assetRegistry2){
return assetRegistry2.get(tx.loanNum);
})
.then(function(updateloan){
loanToUpdate = updateloan
loanToUpdate.balance = tx.transAmount;
return getAssetRegistry(NS + '.Loan')
})
.then(function(assetRegistry3){
return assetRegistry3.update(loanToUpdate);
})
}
else {
return getAssetRegistry(NS + '.Loan')
.then(function(assetRegistry2){
var newLoan = factory.newResource(NS,'Loan',tx.loanNum);
newLoan.balance = tx.transAmount;
return assetRegistry2.add(newLoan);
})
}
})
}