我正在尝试创建一个业务网络,通过从URL(https://random-number-api.mybluemix.net/random)请求一个随机数来演示不确定行为。
但是,当我从中调用事务时,会出现以下错误:
TypeError:request.get不是函数
在文档(https://hyperledger.github.io/composer/latest/integrating/call-out)中,提到请求是全局的,可以直接使用。
测试网址
curl -X GET https://random-number-api.mybluemix.net/random
我正在使用Composer 0.18.2。
以下是代码。整个业务网络定义可在此处找到:https://github.com/caveman7/nondeterministic
async function createStock(request) {
const factory = getFactory();
const namespace = 'org.nondeterministic';
const stock = factory.newResource(namespace, 'Stock', request.stockId);
const priceAsStr = await request.get({uri: 'https://random-number-api.mybluemix.net/random'});
stock.price = parseInt(priceAsStr);
//stock.price = getPrice();
console.log('@debug - Stock Price Generated is: USD' + stock.price);
const ar = await getAssetRegistry(namespace + '.Stock')
await ar.add(stock);
}
const getPrice = () => {
const price = Math.floor((Math.random() * 10000) + 1);
return price;
}
答案 0 :(得分:1)
可能是因为您提供request
作为TP的对象。如上所示或https://github.com/caveman7/nondeterministic/blob/master/lib/script.js#L22
错误,因为它不是'得到了一个名为get
的方法?它应该是async function createStock(createStock )
以匹配事务装饰器中的参数名称(从上面的链接跟踪github脚本文件) - 然后你应该能够像你期望的那样访问request.get()
(从{{ 1}}进入了0.18.1 IIRC)。