我有一个Hyperledger Composer项目,在这里我想从交易中返回生成的ID。这是model.cto
文件的相关部分:
@returns(String)
transaction SetupGame {
o PlayerTotem[] players
}
这是script.js
中的交易:
/**
* Setup Game transaction
* @param {org.pandemic.board.SetupGame} txData
* @returns {String} The string
* @transaction
*/
function setupGame(txData) {
let totems = txData.players;
return getAssetRegistry('org.pandemic.board.Board').then((registry) => {
let factory = getFactory();
let NS = 'org.pandemic.board';
let boardId = generateId();
let board = factory.newResource(NS, 'Board', boardId);
let boardCities = buildBoardCities(factory, NS);
board.cities = boardCities;
let infectionCards = buildInfectionCards(factory, NS);
board.infectionCards = shuffle(infectionCards);
let playerCards = buildPlayerCards(factory, NS);
board.playerCards = shuffle(playerCards);
let playerTotems = buildPlayerTotems(totems, factory, NS);
board.players = playerTotems;
return registry.add(board).then(() => {
return Promise.resolve(boardId);
});
});
}
我试图遵循Composer参考文献中规定的约定,以将JSDoc放在脚本文件here中:
/**
* Setup Game transaction
* @param {org.pandemic.board.SetupGame} txData
* @returns [string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string) The string
* @transaction
*/
但是当我像这样设置@returns
注释时,composer archive create
会抛出格式错误的JSDoc错误,因此我将其更改为@returns {String} The string
我希望作为交易的结果取回boardId,但是我只是取回了交易:
{
"$class": "org.pandemic.board.SetupGame",
"players": [
{
"$class": "org.pandemic.board.PlayerTotem",
"totemName": "Daniel",
"currentLocation": "Atlanta",
"role": "MEDIC",
"cards": [],
"actionsRemaining": "4"
}
],
"transactionId": "a87b071c78e00617430ca4e6e189a984feb41a8e2f5ae101e0d73eb4d172d927"
}
答案 0 :(得分:0)
有关相同问题,请在GitHub中查看此问题。
https://github.com/hyperledger/composer/issues/4245
贡献者提供的代码已被合并,因此它将很快出现在Composer发行版中。可能在本周晚些时候,否则可能在下周。