Modifying an array property of a resource (participant) during a transaction











up vote
0
down vote

favorite












I want to modify a property of a participant which is an array of relationships during a transaction.



Let's assume I have a user that holds an array of keys like so:



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

asset Key identified by keyId {
o String keyId
}

transaction modifyUserKeys {
--> User user
}


Then in the transaction processor function I modify the array (as in adding and removing elements in it) and update the participant:



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);
});
}


In the documentation I saw a method called addArrayValue() which adds an element to an array. Now I'm unsure whether I'm meant to use this over conventional array manipulation like in my example.



What purpose does this addArrayValue() method have and am I able to e.g. remove elements from keys via keys.pop() or is it restricted to just the addition of new elements like the documentation suggests?










share|improve this question






















  • you can use conventional (push/pop) if you like and as you've done, but newKey would need to be newRelationship() see - useful example -> github.com/hyperledger/composer-sample-networks/blob/master/… in Composer sample networks - addArrayValue() is also validating that it does not violate the model
    – Paul O'Mahony
    Nov 19 at 11:48












  • Thanks for the clarification, that's also a good example.
    – Janine Kostka
    Nov 20 at 9:36















up vote
0
down vote

favorite












I want to modify a property of a participant which is an array of relationships during a transaction.



Let's assume I have a user that holds an array of keys like so:



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

asset Key identified by keyId {
o String keyId
}

transaction modifyUserKeys {
--> User user
}


Then in the transaction processor function I modify the array (as in adding and removing elements in it) and update the participant:



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);
});
}


In the documentation I saw a method called addArrayValue() which adds an element to an array. Now I'm unsure whether I'm meant to use this over conventional array manipulation like in my example.



What purpose does this addArrayValue() method have and am I able to e.g. remove elements from keys via keys.pop() or is it restricted to just the addition of new elements like the documentation suggests?










share|improve this question






















  • you can use conventional (push/pop) if you like and as you've done, but newKey would need to be newRelationship() see - useful example -> github.com/hyperledger/composer-sample-networks/blob/master/… in Composer sample networks - addArrayValue() is also validating that it does not violate the model
    – Paul O'Mahony
    Nov 19 at 11:48












  • Thanks for the clarification, that's also a good example.
    – Janine Kostka
    Nov 20 at 9:36













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I want to modify a property of a participant which is an array of relationships during a transaction.



Let's assume I have a user that holds an array of keys like so:



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

asset Key identified by keyId {
o String keyId
}

transaction modifyUserKeys {
--> User user
}


Then in the transaction processor function I modify the array (as in adding and removing elements in it) and update the participant:



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);
});
}


In the documentation I saw a method called addArrayValue() which adds an element to an array. Now I'm unsure whether I'm meant to use this over conventional array manipulation like in my example.



What purpose does this addArrayValue() method have and am I able to e.g. remove elements from keys via keys.pop() or is it restricted to just the addition of new elements like the documentation suggests?










share|improve this question













I want to modify a property of a participant which is an array of relationships during a transaction.



Let's assume I have a user that holds an array of keys like so:



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

asset Key identified by keyId {
o String keyId
}

transaction modifyUserKeys {
--> User user
}


Then in the transaction processor function I modify the array (as in adding and removing elements in it) and update the participant:



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);
});
}


In the documentation I saw a method called addArrayValue() which adds an element to an array. Now I'm unsure whether I'm meant to use this over conventional array manipulation like in my example.



What purpose does this addArrayValue() method have and am I able to e.g. remove elements from keys via keys.pop() or is it restricted to just the addition of new elements like the documentation suggests?







hyperledger-composer






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 18 at 8:00









Janine Kostka

103




103












  • you can use conventional (push/pop) if you like and as you've done, but newKey would need to be newRelationship() see - useful example -> github.com/hyperledger/composer-sample-networks/blob/master/… in Composer sample networks - addArrayValue() is also validating that it does not violate the model
    – Paul O'Mahony
    Nov 19 at 11:48












  • Thanks for the clarification, that's also a good example.
    – Janine Kostka
    Nov 20 at 9:36


















  • you can use conventional (push/pop) if you like and as you've done, but newKey would need to be newRelationship() see - useful example -> github.com/hyperledger/composer-sample-networks/blob/master/… in Composer sample networks - addArrayValue() is also validating that it does not violate the model
    – Paul O'Mahony
    Nov 19 at 11:48












  • Thanks for the clarification, that's also a good example.
    – Janine Kostka
    Nov 20 at 9:36
















you can use conventional (push/pop) if you like and as you've done, but newKey would need to be newRelationship() see - useful example -> github.com/hyperledger/composer-sample-networks/blob/master/… in Composer sample networks - addArrayValue() is also validating that it does not violate the model
– Paul O'Mahony
Nov 19 at 11:48






you can use conventional (push/pop) if you like and as you've done, but newKey would need to be newRelationship() see - useful example -> github.com/hyperledger/composer-sample-networks/blob/master/… in Composer sample networks - addArrayValue() is also validating that it does not violate the model
– Paul O'Mahony
Nov 19 at 11:48














Thanks for the clarification, that's also a good example.
– Janine Kostka
Nov 20 at 9:36




Thanks for the clarification, that's also a good example.
– Janine Kostka
Nov 20 at 9:36












1 Answer
1






active

oldest

votes

















up vote
0
down vote



accepted










you can use conventional (push/pop) if you like (and as you've done on the array), but newKey would need to use newRelationship()



a useful example similar to what you're trying to achieve is here -> https://github.com/hyperledger/composer-sample-networks/blob/master/packages/fund-clearing-network/lib/clearing.js#L151 in Composer sample networks - addArrayValue() is also validating that it does not violate the model






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














     

    draft saved


    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53358941%2fmodifying-an-array-property-of-a-resource-participant-during-a-transaction%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote



    accepted










    you can use conventional (push/pop) if you like (and as you've done on the array), but newKey would need to use newRelationship()



    a useful example similar to what you're trying to achieve is here -> https://github.com/hyperledger/composer-sample-networks/blob/master/packages/fund-clearing-network/lib/clearing.js#L151 in Composer sample networks - addArrayValue() is also validating that it does not violate the model






    share|improve this answer

























      up vote
      0
      down vote



      accepted










      you can use conventional (push/pop) if you like (and as you've done on the array), but newKey would need to use newRelationship()



      a useful example similar to what you're trying to achieve is here -> https://github.com/hyperledger/composer-sample-networks/blob/master/packages/fund-clearing-network/lib/clearing.js#L151 in Composer sample networks - addArrayValue() is also validating that it does not violate the model






      share|improve this answer























        up vote
        0
        down vote



        accepted







        up vote
        0
        down vote



        accepted






        you can use conventional (push/pop) if you like (and as you've done on the array), but newKey would need to use newRelationship()



        a useful example similar to what you're trying to achieve is here -> https://github.com/hyperledger/composer-sample-networks/blob/master/packages/fund-clearing-network/lib/clearing.js#L151 in Composer sample networks - addArrayValue() is also validating that it does not violate the model






        share|improve this answer












        you can use conventional (push/pop) if you like (and as you've done on the array), but newKey would need to use newRelationship()



        a useful example similar to what you're trying to achieve is here -> https://github.com/hyperledger/composer-sample-networks/blob/master/packages/fund-clearing-network/lib/clearing.js#L151 in Composer sample networks - addArrayValue() is also validating that it does not violate the model







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 2 days ago









        Paul O'Mahony

        5,5631412




        5,5631412






























             

            draft saved


            draft discarded



















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53358941%2fmodifying-an-array-property-of-a-resource-participant-during-a-transaction%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Ottavio Pratesi

            Tricia Helfer

            15 giugno