Realm - Insert if realm object does not exist else update












0















I am using Realm in my react native project. Realm is encrypted. I am storing user object in it and there will be only one user so I have set the Id to be 1 always.



when the object exists, I just want to update it instead of create. How can i do it. as of now I can create it but once created I am unable to update it.



It errors with a message



Error: Attempting to create an object of type 'User' with an existing primary key value '1'.



my code:



    //user schema functions
export const insertUser = user => new Promise ((resolve, reject) => {
var encryptedPin = cryptoEncryptTest(getGlobalPin());
Realm.open(
{path: 'retailApp.realm',
schema: [ userSchema],
schemaVersion: 0, //optional
encryptionKey: encryptedPin }
//databaseOptions
).then(realm => {
realm.write(() => {
realm.create(USER_SCHEMA, user);
resolve(user);
});
}).catch((error) => reject(error));
});


I read about copyToRealm and append but I am not sure how to use and which is the write way. I tried to delete it before inserting but I dont think that is the right way of doing it.



please suggest how to achieve this.



Thanks
R










share|improve this question



























    0















    I am using Realm in my react native project. Realm is encrypted. I am storing user object in it and there will be only one user so I have set the Id to be 1 always.



    when the object exists, I just want to update it instead of create. How can i do it. as of now I can create it but once created I am unable to update it.



    It errors with a message



    Error: Attempting to create an object of type 'User' with an existing primary key value '1'.



    my code:



        //user schema functions
    export const insertUser = user => new Promise ((resolve, reject) => {
    var encryptedPin = cryptoEncryptTest(getGlobalPin());
    Realm.open(
    {path: 'retailApp.realm',
    schema: [ userSchema],
    schemaVersion: 0, //optional
    encryptionKey: encryptedPin }
    //databaseOptions
    ).then(realm => {
    realm.write(() => {
    realm.create(USER_SCHEMA, user);
    resolve(user);
    });
    }).catch((error) => reject(error));
    });


    I read about copyToRealm and append but I am not sure how to use and which is the write way. I tried to delete it before inserting but I dont think that is the right way of doing it.



    please suggest how to achieve this.



    Thanks
    R










    share|improve this question

























      0












      0








      0








      I am using Realm in my react native project. Realm is encrypted. I am storing user object in it and there will be only one user so I have set the Id to be 1 always.



      when the object exists, I just want to update it instead of create. How can i do it. as of now I can create it but once created I am unable to update it.



      It errors with a message



      Error: Attempting to create an object of type 'User' with an existing primary key value '1'.



      my code:



          //user schema functions
      export const insertUser = user => new Promise ((resolve, reject) => {
      var encryptedPin = cryptoEncryptTest(getGlobalPin());
      Realm.open(
      {path: 'retailApp.realm',
      schema: [ userSchema],
      schemaVersion: 0, //optional
      encryptionKey: encryptedPin }
      //databaseOptions
      ).then(realm => {
      realm.write(() => {
      realm.create(USER_SCHEMA, user);
      resolve(user);
      });
      }).catch((error) => reject(error));
      });


      I read about copyToRealm and append but I am not sure how to use and which is the write way. I tried to delete it before inserting but I dont think that is the right way of doing it.



      please suggest how to achieve this.



      Thanks
      R










      share|improve this question














      I am using Realm in my react native project. Realm is encrypted. I am storing user object in it and there will be only one user so I have set the Id to be 1 always.



      when the object exists, I just want to update it instead of create. How can i do it. as of now I can create it but once created I am unable to update it.



      It errors with a message



      Error: Attempting to create an object of type 'User' with an existing primary key value '1'.



      my code:



          //user schema functions
      export const insertUser = user => new Promise ((resolve, reject) => {
      var encryptedPin = cryptoEncryptTest(getGlobalPin());
      Realm.open(
      {path: 'retailApp.realm',
      schema: [ userSchema],
      schemaVersion: 0, //optional
      encryptionKey: encryptedPin }
      //databaseOptions
      ).then(realm => {
      realm.write(() => {
      realm.create(USER_SCHEMA, user);
      resolve(user);
      });
      }).catch((error) => reject(error));
      });


      I read about copyToRealm and append but I am not sure how to use and which is the write way. I tried to delete it before inserting but I dont think that is the right way of doing it.



      please suggest how to achieve this.



      Thanks
      R







      react-native realm realm-mobile-platform






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 20 '18 at 11:57









      BRDroidBRDroid

      67421331




      67421331
























          1 Answer
          1






          active

          oldest

          votes


















          0














          You can update



           var song = realm.objects('song')//replace with your object(USER_SCHEMA)
          realm.write(() => {
          realm.delete(song);
          realm.create('song', currentSong, true);
          })





          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',
            autoActivateHeartbeat: false,
            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%2f53392516%2frealm-insert-if-realm-object-does-not-exist-else-update%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









            0














            You can update



             var song = realm.objects('song')//replace with your object(USER_SCHEMA)
            realm.write(() => {
            realm.delete(song);
            realm.create('song', currentSong, true);
            })





            share|improve this answer




























              0














              You can update



               var song = realm.objects('song')//replace with your object(USER_SCHEMA)
              realm.write(() => {
              realm.delete(song);
              realm.create('song', currentSong, true);
              })





              share|improve this answer


























                0












                0








                0







                You can update



                 var song = realm.objects('song')//replace with your object(USER_SCHEMA)
                realm.write(() => {
                realm.delete(song);
                realm.create('song', currentSong, true);
                })





                share|improve this answer













                You can update



                 var song = realm.objects('song')//replace with your object(USER_SCHEMA)
                realm.write(() => {
                realm.delete(song);
                realm.create('song', currentSong, true);
                })






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 20 '18 at 12:13









                AshaAsha

                2081316




                2081316






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53392516%2frealm-insert-if-realm-object-does-not-exist-else-update%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

                    MongoDB - Not Authorized To Execute Command

                    How to fix TextFormField cause rebuild widget in Flutter

                    Npm cannot find a required file even through it is in the searched directory