Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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 错误:hyperledger composer中应包含资源或概念_Javascript_Hyperledger Fabric_Blockchain_Hyperledger Composer_Hyperledger Chaincode - Fatal编程技术网

Javascript 错误:hyperledger composer中应包含资源或概念

Javascript 错误:hyperledger composer中应包含资源或概念,javascript,hyperledger-fabric,blockchain,hyperledger-composer,hyperledger-chaincode,Javascript,Hyperledger Fabric,Blockchain,Hyperledger Composer,Hyperledger Chaincode,当我试图在composer Playerd中执行事务时,我得到一个错误:预期为资源或概念,错误消息显示“预期为资源或概念”。 交易名称为“雇佣员工” /*这是我的.cto文件:*/ namespace org.example.basic /** *Asset Job Defenition */ enum JobState { o OPEN o ON_LIVE o HIRED } concept JobDescription { o String jobTitle o String jo

当我试图在composer Playerd中执行事务时,我得到一个错误:预期为资源或概念,错误消息显示“预期为资源或概念”。 交易名称为“雇佣员工”

/*这是我的.cto文件:*/

namespace org.example.basic


/** 
*Asset Job Defenition
*/

enum JobState {
o OPEN
o ON_LIVE
o HIRED
}

concept JobDescription {
o String jobTitle
o String jobdescription
o String skill
o String Duration
}

asset Job identified by jobId {
o String jobId
--> Employer employer
--> Member hiredemployee optional
o Double budget
o JobState state
o JobDescription description
o Bid[] offers optional
}

/**
*Asset Forum Defenition
*/


asset Forum identified by forumId {
  o String forumId
  -->Member owner
  o String question
  o Solution[] solutions optional
}

/**
* Participants of the network
*/


abstract participant User identified by userId {
  o String userId
  o String firstName
  o String lastName
}

participant Member extends User {
 o Double expPoint
 o Double credit
}

participant Employer extends User {
  o Double credit
}

/**
*Transactions
*/

transaction Bid {
  o Double bidPrice
  -->Job job
  -->Member member
}


transaction HireEmployee {
  -->Job job
}

transaction Solution {
  o String answer
  -->Forum forum
  -->Member member

}
/** 链码文件 *雇用雇员 *@param{org.example.basic.HireEmployee}hire-雇佣 *@交易 */


在函数调用的第一行中,我将“const”改为“let”。通过此修改,我能够在Hyperledger Composer游乐场中进行测试事务。你能检查一下这对你是否有效吗

/** 
* Hire an Employee 
* @param {org.example.basic.HireEmployee} hire - the hire 
* @transaction 
*/

async function hireEmployee(hire) {
    let job = hire.job;
    if (job.state !== 'OPEN') {
        throw new Error('This Job is Closed and Someone is Already Hired');
    }

    job.state = 'ON_LIVE';  
    let lowestOffer = null;
    let employee = null;
    let employer =null;

    if (job.offers && job.offers.length > 0) {
        // sort the bids by bidPrice
        job.offers.sort(function(a, b) {
            return (a.bidPrice - b.bidPrice);
        });
        lowestOffer = job.offers[0];
        if (lowestOffer.bidPrice >= 5 ) {
            // mark the job as Hired
            job.state = 'HIRED';
            let employer = job.employer;
            let employee = lowestOffer.member;

            console.log('#### employer balance before: ' + employer.credit);
            employer.credit -= lowestOffer.bidPrice;
            console.log('#### employer balance after: ' + employer.credit);
            // update the balance of the buyer
            console.log('#### Employee balance before: ' + employee.credit);
            employee.credit += lowestOffer.bidPrice;
            console.log('#### buyer balance after: ' + employee.credit);
            // mark the hire employee
            job.hiredemployee = employee;

            job.offers = null;
        }
    }

     // save the bid
    const jobRegistry = await getAssetRegistry('org.example.basic.Job');
    await jobRegistry.update(job);

    if (job.state === 'HIRED') {
        // save the buyer
        const memberRegistry = await getParticipantRegistry('org.example.basic.Member');
        await memberRegistry.update(employee);

        const userRegistry = await getParticipantRegistry('org.example.basic.Employer');
        await userRegistry.update(employer);
    }


}

在函数调用的第一行中,我将“const”改为“let”。通过此修改,我能够在Hyperledger Composer游乐场中进行测试事务。你能检查一下这对你是否有效吗

/** 
* Hire an Employee 
* @param {org.example.basic.HireEmployee} hire - the hire 
* @transaction 
*/

async function hireEmployee(hire) {
    let job = hire.job;
    if (job.state !== 'OPEN') {
        throw new Error('This Job is Closed and Someone is Already Hired');
    }

    job.state = 'ON_LIVE';  
    let lowestOffer = null;
    let employee = null;
    let employer =null;

    if (job.offers && job.offers.length > 0) {
        // sort the bids by bidPrice
        job.offers.sort(function(a, b) {
            return (a.bidPrice - b.bidPrice);
        });
        lowestOffer = job.offers[0];
        if (lowestOffer.bidPrice >= 5 ) {
            // mark the job as Hired
            job.state = 'HIRED';
            let employer = job.employer;
            let employee = lowestOffer.member;

            console.log('#### employer balance before: ' + employer.credit);
            employer.credit -= lowestOffer.bidPrice;
            console.log('#### employer balance after: ' + employer.credit);
            // update the balance of the buyer
            console.log('#### Employee balance before: ' + employee.credit);
            employee.credit += lowestOffer.bidPrice;
            console.log('#### buyer balance after: ' + employee.credit);
            // mark the hire employee
            job.hiredemployee = employee;

            job.offers = null;
        }
    }

     // save the bid
    const jobRegistry = await getAssetRegistry('org.example.basic.Job');
    await jobRegistry.update(job);

    if (job.state === 'HIRED') {
        // save the buyer
        const memberRegistry = await getParticipantRegistry('org.example.basic.Member');
        await memberRegistry.update(employee);

        const userRegistry = await getParticipantRegistry('org.example.basic.Employer');
        await userRegistry.update(employer);
    }


}

同时共享您的
出价
交易代码。同时共享您的
出价
交易代码。