nodeJS で記述されたアプリケーションが nodeJS で記述されたチェーンコード関数を呼び出す、Hyperledger Fabric を使用してアプリケーションを開発しています。このチェーン コード関数は、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 スクリプトを呼び出していません。私が欠けているものはありますか?ありがとう。