在事务期间修改资源(参与者)的数组属性

时间:2018-11-18 08:00:31

标签: hyperledger-composer

我想修改参与者的属性,该属性是交易期间的一系列关系。

假设我有一个用户,该用户拥有如下所示的键数组:

participant User identified by userId {
    o String userId
    --> Key[] keys
}

asset Key identified by keyId {
    o String keyId
}

transaction modifyUserKeys {
    --> User user
}

然后在事务处理器函数中,我修改数组(如在其中添加和删除元素一样)并更新参与者:

function modifyUserKeys(tx) {
    let user = tx.user;

    // create a new key via factory 
    var newKey = ...

    user.keys.push(newKey);

    return getParticipantRegistry('com.sample.User')
    .then(function (participantRegistry) {
        return participantRegistry.update(user);
    });
}

documentation中,我看到了一个名为addArrayValue()的方法,该方法将一个元素添加到数组中。现在我不确定我是否打算像在我的示例中那样在常规数组操作上使用它。

addArrayValue()方法有什么目的,我可以例如通过keyskeys.pop()中删除元素,还是仅限于像文档中建议的那样添加新元素?

1 个答案:

答案 0 :(得分:0)

如果愿意(可以在阵列上完成操作),可以使用常规的(按入/弹出),但是newKey将需要使用newRelationship()

类似于您要实现的目标的有用示例在此处-> Composer示例网络中的https://github.com/hyperledger/composer-sample-networks/blob/master/packages/fund-clearing-network/lib/clearing.js#L151-addArrayValue()也在验证它没有违反模型