我正在使用 Hyperledger Fabric 开发应用程序,其中用 nodeJS 编写的应用程序调用也用 nodeJS 编写的链代码函数。这个链码函数应该调用一个 Python 脚本,做一些事情并将结果写入链码函数。该链码函数应该将 Python 脚本返回的结果存储在账本上,并将成功存储状态返回给调用应用程序。我尝试通过以下方式使用nodeJS给出的子进程模块来做到这一点 -
async mergeModel(ctx, modelNumber1, modelNumber2) {
console.info('============= START : Merge Model ===========');
const modelAsBytes1 = await ctx.stub.getState(modelNumber1); // get the model from chaincode state
const modelAsBytes2 = await ctx.stub.getState(modelNumber2); // get the model from chaincode state
if (!modelAsBytes1 || modelAsBytes1.length === 0) {
throw new Error(`${modelNumber1} does not exist`);
}
if (!modelAsBytes2 || modelAsBytes2.length === 0) {
throw new Error(`${modelNumber2} does not exist`);
}
const spawn = require('child_process').spawn;
const pythonProcess = spawn('python',['mergeModel.py', modelAsBytes1, modelAsBytes2]);
pythonProcess.stdout.on('data', (data) => {
console.log(data);
});
}
python 脚本 mergeModel.py 存储在与链代码相同的目录中。但是,这并没有按预期调用 python 脚本。有什么我想念的吗。谢谢。