当我调用名为IntentForSale的事务时,我得到“错误:名称空间org.example.property中Type PropertyListing的标识符无效或丢失”
我试图更改let propertyListing = factory.newResource(propertynamespace,'Property',tx.PID);
让propertyListing = factory.newResource(propertynamespace,'PropertyListing',tx.PID);并检查了我的model.cto。
模型
/* This namespace helps in idetifying the entities for the network. */
namespace org.example.property
/* Asset Property identified by a striing PID
This is used to maintain the properties which are registered in the system.
*/
asset Property identified by PID {
o String PID
o String owner
o Integer mktprice
o String RegistrationDate
o String PropertyType
o String Location
o String Status default = "Registered"
o Boolean Public
o Boolean Private
o Boolean IntentOfSale
}
/* Asset PropertyListing identified by a striing PLID
This is used to maintain the properties which are listed for sale in the system.
*/
asset PropertyListing identified by PLID {
o String PLID
o String owner
o Integer mktprice
o String RegistrationDate
o String PropertyType
o String Location
o String Status default = "Intent Of Sale"
}
/* Participant Buyer identified by a striing Bname
This is used to maintain the buyers who are part of the system.
*/
participant Buyer identified by Bname {
o String Bname
o String Bemail
o Integer IdentityNo //Passport, SSN, Aadhar etc.
o String Bnkname
o String Bnkaddress
o Integer AccNo
o String IFSC
o Integer Balance
}
/* Participant Seller identified by a striing Sname
This is used to maintain the sellers who are part of the system.
*/
participant Seller identified by Sname {
o String Sname
o String Semail
o Integer IdentityNo
o String Bnkname
o String Bnkaddress
o Integer AccNo
o String IFSC
o Integer Balance
o String SaleDeedDocs
}
/* Participant Registrar identified by a striing Rname
This is used to maintain the registrar who are part of the system.
*/
participant Registrar identified by Rname {
o String Rname
o String Remail
}
/* Transaction Created
This is used to add new properties in the system.
*/
transaction Created {
o String PID
--> Property cproperty
}
transaction Registered {
o String PID
--> PropertyListing rpropertylisting
--> Buyer rbuyer
}
transaction IntentForSale {
--> Property iproperty
--> PropertyListing ipropertylisting
--> Seller iseller
}
Script.js
/**
* Transaction Created to put the property for sale in the system
* @param {org.example.property.IntentForSale} tx
* @transaction
*/
async function IntentForSale(tx){
console.log('Property IntentForSale Transaction');
//Getting the namespace and factory
const propertynamespace = 'org.example.property';
const factory = getFactory();
//Putting the property for sale
let propertyListing = factory.newResource(propertynamespace, 'PropertyListing', tx.PLID);
propertyListing.owner = tx.iseller.Sname;
propertyListing.mktprice = tx.iproperty.mktprice;
propertyListing.RegistrationDate = tx.iproperty.RegistrationDate;
propertyListing.PropertyType = tx.iproperty.PropertyType;
propertyListing.Location = tx.iproperty.Location;
propertyListing.Status = tx.iproperty.Status;
//Get the asset registry
let registry = await getAssetRegistry('org.example.property.PropertyListing');
// save the property
await registry.add(propertyListing);
}
当我通过这些
{
"$class": "org.example.property.IntentForSale",
"iproperty": "resource:org.example.property.Property#101",
"ipropertylisting": "resource:org.example.property.PropertyListing#102",
"iseller": "resource:org.example.property.Seller#shantanu"
}
click to see error screenshot
它应该使交易成功
最佳答案
看起来,在IntentForSale交易模型中,您没有属性PLID,并且您正在通过交易逻辑中的这个低谷。我认为您想要创建一个新资源,您需要为其指定一些ID。所以是这样的:
//Putting the property for sale
let propertyListing = factory.newResource(propertynamespace, 'PropertyListing', tx.transactionId);
关于javascript - “如何在 super 账本编辑器中解决'错误:无效或丢失的标识符'”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57159911/