当我尝试在composer-playground中执行事务时,我收到错误“getAssetRegistry返回null并且错误消息显示assetRegistry未定义”
/ *这是我的.cto文件:* /
pip3 install --upgrade virtualenv
/ * chaincode / logic.js文件:* / `/ ** *订购车辆 * @param {org.acme.payrent.Agreement}创建协议事务 * @transaction * /
namespace org.acme.payrent
participant Authority identified by authorityId {
o String authorityId
}
participant Tenant identified by tenantEmailId {
o String tenantEmailId regex =/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/
o String tFirstName
o Address Address
o TBankDetails tBank
o Integer accountNo
}
participant Owner identified by ownerEmailId {
o String ownerEmailId regex =/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/
o String name
o String number regex=/^[0-9]*$/
o Integer bankaccountno
o Address propAddress
--> Tenant tnt
}
participant Bank identified by bankID {
o String bankID
o TBankDetails tBank
}
asset Property identified by propAddress {
o String propAddress
o Address propActAddress
o String tenantName
o Double rentAmount
}
concept Address {
o String houseNumber
o String street
o String city
o String country
}
concept TBankDetails {
o String bankName
o String ifscCode
o String branchName
}
concept Contact {
o String email regex =/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/
o String mobileNumber regex=/^[0-9]*$/
o String firstName
o String lastName
}
event E1{
o String email
o String mobileNumber regex=/^[0-9]*$/
o String tntName
o TBankDetails tntBankDetails
o Address propertyAddress
}
transaction Agreement{
--> Property property
o String owrName
o String tntName
o String email
o String propAddress
o String mobileNumber
o String bankName
o String ifscCode
o String branchName
}`
答案 0 :(得分:3)
您的代码存在许多问题
property
时使用了错误的对象,因此您的assetRegistry更新无效Property
资产已被更新,因为交易应该是Agreement
/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Sample transaction processor function. * @param {org.acme.payrent.Agreement} tntObj The sample transaction instance. * @transaction */ function Agreement(tntObj) { var factory = getFactory(); var Namespace = "org.acme.payrent"; var property = tntObj.property; // please note console.log('property is ' + property); var addTntEvent = factory.newEvent(Namespace, 'E1'); addTntEvent.email = tntObj.email; addTntEvent.mobileNumber = tntObj.mobileNumber ; addTntEvent.tntName = tntObj.tntName; var tntBankDetails = factory.newConcept(Namespace, 'TBankDetails'); tntBankDetails.bankName = tntObj.bankName; tntBankDetails.ifscCode = tntObj.ifscCode; tntBankDetails.branchName = tntObj.branchName; addTntEvent.tntBankDetails = tntBankDetails; var conceptAddress = factory.newConcept(Namespace, 'Address'); conceptAddress.houseNumber = '10'; conceptAddress.street = '20'; conceptAddress.city = 'Mainz'; conceptAddress.country = 'DE'; addTntEvent.propertyAddress = conceptAddress; emit(addTntEvent); //remove this! var a = getAssetRegistry('org.acme.payrent.Property'); property.rentAmount =44.22 ; /// so you can see the value change on the asset in playground etc return getAssetRegistry('org.acme.payrent.Property') .then(function(propertyRegistry) { return propertyRegistry.update(property); }); }