Which is more reliable to use object representation or String in Firestore












1















I have a Firebase Firestore collection of products (125 and growing). Each product document has about 18 properties (name, price, stock etc). I can get all the documents successfully using:



val product = document.toObject(Product::class.java)


but I can use:



val name = document.getString("name")


Which is more recommended?










share|improve this question

























  • Thank you all!!

    – Divyansh Jayesh
    Nov 22 '18 at 14:55
















1















I have a Firebase Firestore collection of products (125 and growing). Each product document has about 18 properties (name, price, stock etc). I can get all the documents successfully using:



val product = document.toObject(Product::class.java)


but I can use:



val name = document.getString("name")


Which is more recommended?










share|improve this question

























  • Thank you all!!

    – Divyansh Jayesh
    Nov 22 '18 at 14:55














1












1








1








I have a Firebase Firestore collection of products (125 and growing). Each product document has about 18 properties (name, price, stock etc). I can get all the documents successfully using:



val product = document.toObject(Product::class.java)


but I can use:



val name = document.getString("name")


Which is more recommended?










share|improve this question
















I have a Firebase Firestore collection of products (125 and growing). Each product document has about 18 properties (name, price, stock etc). I can get all the documents successfully using:



val product = document.toObject(Product::class.java)


but I can use:



val name = document.getString("name")


Which is more recommended?







android firebase kotlin google-cloud-firestore






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 22 '18 at 14:54









Frank van Puffelen

239k29382408




239k29382408










asked Nov 22 '18 at 13:30









Divyansh JayeshDivyansh Jayesh

154




154













  • Thank you all!!

    – Divyansh Jayesh
    Nov 22 '18 at 14:55



















  • Thank you all!!

    – Divyansh Jayesh
    Nov 22 '18 at 14:55

















Thank you all!!

– Divyansh Jayesh
Nov 22 '18 at 14:55





Thank you all!!

– Divyansh Jayesh
Nov 22 '18 at 14:55












2 Answers
2






active

oldest

votes


















1














According to your actual structure where you have only 125 items, you can use each one you want. If your collection will grow so much as it will contain a very large number of documents, there might be a reasons why you should not use the first approach. Cloud Firestore uses reflection, so in case of very large number of documents, your app might become a little bit slower.



Further more, if you only need to display one or two properties, why to get them all? So if you only really need a subset of the fields, just use the second approach.



So even if we talk about a small data set (maybe it's not your case) but I have seen data that was not formated properly in a way the developer want.






share|improve this answer































    1














    While developing, I often find it more convenient to use the direct accessor methods of the Document class to get the fields from a document. During this time I'm still figuring out what precise fields and types each entity has.



    If/once all documents have the same fields, and your data model is fairly stable, I'd recommend defining a Product class to model the fields from the document in Java/Kotlin code.






    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%2f53432097%2fwhich-is-more-reliable-to-use-object-representation-or-string-in-firestore%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      1














      According to your actual structure where you have only 125 items, you can use each one you want. If your collection will grow so much as it will contain a very large number of documents, there might be a reasons why you should not use the first approach. Cloud Firestore uses reflection, so in case of very large number of documents, your app might become a little bit slower.



      Further more, if you only need to display one or two properties, why to get them all? So if you only really need a subset of the fields, just use the second approach.



      So even if we talk about a small data set (maybe it's not your case) but I have seen data that was not formated properly in a way the developer want.






      share|improve this answer




























        1














        According to your actual structure where you have only 125 items, you can use each one you want. If your collection will grow so much as it will contain a very large number of documents, there might be a reasons why you should not use the first approach. Cloud Firestore uses reflection, so in case of very large number of documents, your app might become a little bit slower.



        Further more, if you only need to display one or two properties, why to get them all? So if you only really need a subset of the fields, just use the second approach.



        So even if we talk about a small data set (maybe it's not your case) but I have seen data that was not formated properly in a way the developer want.






        share|improve this answer


























          1












          1








          1







          According to your actual structure where you have only 125 items, you can use each one you want. If your collection will grow so much as it will contain a very large number of documents, there might be a reasons why you should not use the first approach. Cloud Firestore uses reflection, so in case of very large number of documents, your app might become a little bit slower.



          Further more, if you only need to display one or two properties, why to get them all? So if you only really need a subset of the fields, just use the second approach.



          So even if we talk about a small data set (maybe it's not your case) but I have seen data that was not formated properly in a way the developer want.






          share|improve this answer













          According to your actual structure where you have only 125 items, you can use each one you want. If your collection will grow so much as it will contain a very large number of documents, there might be a reasons why you should not use the first approach. Cloud Firestore uses reflection, so in case of very large number of documents, your app might become a little bit slower.



          Further more, if you only need to display one or two properties, why to get them all? So if you only really need a subset of the fields, just use the second approach.



          So even if we talk about a small data set (maybe it's not your case) but I have seen data that was not formated properly in a way the developer want.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 22 '18 at 13:43









          Alex MamoAlex Mamo

          44.7k82862




          44.7k82862

























              1














              While developing, I often find it more convenient to use the direct accessor methods of the Document class to get the fields from a document. During this time I'm still figuring out what precise fields and types each entity has.



              If/once all documents have the same fields, and your data model is fairly stable, I'd recommend defining a Product class to model the fields from the document in Java/Kotlin code.






              share|improve this answer




























                1














                While developing, I often find it more convenient to use the direct accessor methods of the Document class to get the fields from a document. During this time I'm still figuring out what precise fields and types each entity has.



                If/once all documents have the same fields, and your data model is fairly stable, I'd recommend defining a Product class to model the fields from the document in Java/Kotlin code.






                share|improve this answer


























                  1












                  1








                  1







                  While developing, I often find it more convenient to use the direct accessor methods of the Document class to get the fields from a document. During this time I'm still figuring out what precise fields and types each entity has.



                  If/once all documents have the same fields, and your data model is fairly stable, I'd recommend defining a Product class to model the fields from the document in Java/Kotlin code.






                  share|improve this answer













                  While developing, I often find it more convenient to use the direct accessor methods of the Document class to get the fields from a document. During this time I'm still figuring out what precise fields and types each entity has.



                  If/once all documents have the same fields, and your data model is fairly stable, I'd recommend defining a Product class to model the fields from the document in Java/Kotlin code.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 22 '18 at 14:53









                  Frank van PuffelenFrank van Puffelen

                  239k29382408




                  239k29382408






























                      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%2f53432097%2fwhich-is-more-reliable-to-use-object-representation-or-string-in-firestore%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

                      in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith