@在docker本地运行时返回错误

时间:2018-07-23 12:42:18

标签: hyperledger-composer

我正在尝试从交易中返回资产数组。因此,根据语法,我添加了@returns@commit(false) in cto file,但其抛出错误为

✖ Installing business network. This may take a minute...
ParseException: Expected ")", "-", "false", "true", comment, end of 
line, number, string or whitespace but "P" found. File 
models/org.zcon.healthcare.cto line 370 column 10
Command failed

当我删除@returns注释时,不会引发任何错误。 而且,当我从@returns批注中删除参数“ Patient []”时,它不会引发任何错误。但这违反了语法吗? 我正在使用docker swarm在本地运行应用程序。

我的docker composer版本是v0.19.12

怎么了?这是任何错误吗?

如果要在cto文件中查看事务定义。

@commit(false)
@returns(Patient[]) 
transaction SearchPatient{
  o String firstName optional
  o String lastName optional
}

在逻辑文件中

/**
 * Sample transaction
 * @param {org.zcon.healthcare.SearchPatient} tx
 * @returns{org.zcon.healthcare.Patient[]}
 * @transaction
 */
async function SearchPatient(tx){
    let queryString = `SELECT org.zcon.healthcare.Patient WHERE (`;
    let conditions = [];
    if (tx.hasOwnProperty('firstName')) {
        var firstName =tx.firstName;
        conditions.push(`(firstName == "${firstName}")`)
    };
    if (tx.hasOwnProperty('lastName')) {
        var lastName = tx.lastName;
        conditions.push(`(lastName == "${lastName}")`)
    };
    queryString += conditions.join(' AND ') + ')';
    let finalQuery =  buildQuery(queryString);
    const searchPatient = await query(finalQuery);
    if(searchPatient.length ==0){
        throw "No Patient Records found!!"
    }else
      return searchPatient;   
}

1 个答案:

答案 0 :(得分:0)

我没有看到composer network install出现此错误(部署到正在运行的Fabric),我对模型和代码进行了网络安装(参见屏幕截图)。我建议您的错误可能出在您的业务网络中的其他地方?您可以添加得到错误的完整序列吗?您是如何建立bna文件的?

我也尝试了您的代码(结束...):

const searchPatient = await query(finalQuery);
    console.log("results are " + searchPatient);
    console.log("element 1 of array is " + searchPatient[0]);
    if(searchPatient.length ==0){
        throw "No Patient Records found!!"
    } else
     return searchPatient;   
}

并可以很好地看到返回的结果(如console.log中所示-仅使用显然是FYI的其他网络名称)

enter image description here