我在Hyperledger Composer上的事务函数代码上成功调用了命名查询。问题是,当我尝试使用npm test
运行一组测试时,出现以下错误:
error 'query' is not defined no-undef
出于演示目的,我已经使用yo hyperledger-composer:businessnetwork
生成了一个新的业务网络框架,我使用以下查询添加了一个queries.qry文件:
query getParticipant{
description: "Get participants with given first name"
statement:
SELECT org.acme.mynetwork.SampleParticipant WHERE (firstName == _$firstName)
}
我还修改了lib / logic.js文件以使用以下代码调用上一个查询的事务:
async function sampleTransaction(tx) {
let participant = await query('getParticipant', { firstName: 'Alice' });
console.log(participant);
}
此代码在部署的网络上按预期工作。提交虚拟sampleTransaction时,我可以看到参与者Alice打印在docker日志上。但是,npm test
因前面提到的错误而失败。
也许.eslintrc.yml文件中缺少一些东西,由自耕农自动生成......我真的不知道......
有谁知道如何解决这个问题?在将新代码部署到业务网络之前,它将真正简化开发过程,以便能够正确运行所有测试。
作为参考,我在互联网上发现的关于这个问题的唯一一件事是这个开放的问题,没有关于Hyperledger Composer github的评论: https://github.com/hyperledger/composer/issues/3775
谢谢!
答案 0 :(得分:0)
在composer-sample-networks repo中的测试中定义了查询 - > https://github.com/hyperledger/composer-sample-networks
示例:
答案 1 :(得分:0)
这是抱怨你的TP功能的抱怨。你需要告诉eslint它还不知道的全局函数。如果您在此处查看贸易网络作为示例
https://github.com/hyperledger/composer-sample-networks/blob/master/packages/trade-network/lib/logic.js#L15
您将看到如何通知eslint全局函数声明。
我在这里列出了这一行,因为它只是一行注释
/* global getAssetRegistry getFactory emit query */