Create method chain before object exists












1















Let's say I'm using knex to run queries against an SQL database. I chain a few methods to build the query.



For example:



const sqlConfig = require('./sql.config');

var knex = require('knex')(sqlConfig);

knex.select("*")
.from("books")
.where("author", "=", "José Saramago")
.then((rows) => {
console.log(rows);
})
.catch((err) => {
console.log(err);
})
.finally(() => {
knex.destroy();
})


Now, my question is:



Is there a way to store the method chain before the knex object is created and call it later when it is created?



Something like this:



const methodChain = <<<
.select("*"),
.from("books"),
.where("author", "=", "José Saramago")
>>>

const sqlConfig = require('./sql.config');

var knex = require('knex')(sqlConfig);

knex
.methodChain()
.then((rows) => {
console.log(rows);
})
.catch((err) => {
console.log(err);
})
.finally(function() {
knex.destroy();
})









share|improve this question



























    1















    Let's say I'm using knex to run queries against an SQL database. I chain a few methods to build the query.



    For example:



    const sqlConfig = require('./sql.config');

    var knex = require('knex')(sqlConfig);

    knex.select("*")
    .from("books")
    .where("author", "=", "José Saramago")
    .then((rows) => {
    console.log(rows);
    })
    .catch((err) => {
    console.log(err);
    })
    .finally(() => {
    knex.destroy();
    })


    Now, my question is:



    Is there a way to store the method chain before the knex object is created and call it later when it is created?



    Something like this:



    const methodChain = <<<
    .select("*"),
    .from("books"),
    .where("author", "=", "José Saramago")
    >>>

    const sqlConfig = require('./sql.config');

    var knex = require('knex')(sqlConfig);

    knex
    .methodChain()
    .then((rows) => {
    console.log(rows);
    })
    .catch((err) => {
    console.log(err);
    })
    .finally(function() {
    knex.destroy();
    })









    share|improve this question

























      1












      1








      1








      Let's say I'm using knex to run queries against an SQL database. I chain a few methods to build the query.



      For example:



      const sqlConfig = require('./sql.config');

      var knex = require('knex')(sqlConfig);

      knex.select("*")
      .from("books")
      .where("author", "=", "José Saramago")
      .then((rows) => {
      console.log(rows);
      })
      .catch((err) => {
      console.log(err);
      })
      .finally(() => {
      knex.destroy();
      })


      Now, my question is:



      Is there a way to store the method chain before the knex object is created and call it later when it is created?



      Something like this:



      const methodChain = <<<
      .select("*"),
      .from("books"),
      .where("author", "=", "José Saramago")
      >>>

      const sqlConfig = require('./sql.config');

      var knex = require('knex')(sqlConfig);

      knex
      .methodChain()
      .then((rows) => {
      console.log(rows);
      })
      .catch((err) => {
      console.log(err);
      })
      .finally(function() {
      knex.destroy();
      })









      share|improve this question














      Let's say I'm using knex to run queries against an SQL database. I chain a few methods to build the query.



      For example:



      const sqlConfig = require('./sql.config');

      var knex = require('knex')(sqlConfig);

      knex.select("*")
      .from("books")
      .where("author", "=", "José Saramago")
      .then((rows) => {
      console.log(rows);
      })
      .catch((err) => {
      console.log(err);
      })
      .finally(() => {
      knex.destroy();
      })


      Now, my question is:



      Is there a way to store the method chain before the knex object is created and call it later when it is created?



      Something like this:



      const methodChain = <<<
      .select("*"),
      .from("books"),
      .where("author", "=", "José Saramago")
      >>>

      const sqlConfig = require('./sql.config');

      var knex = require('knex')(sqlConfig);

      knex
      .methodChain()
      .then((rows) => {
      console.log(rows);
      })
      .catch((err) => {
      console.log(err);
      })
      .finally(function() {
      knex.destroy();
      })






      javascript method-chaining






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 18:52









      Edgar Ramírez MondragónEdgar Ramírez Mondragón

      1,5512821




      1,5512821
























          2 Answers
          2






          active

          oldest

          votes


















          2














          You could create a function that accepts the initial parameter in the chain:



          function methodChain(in) {
          return in.select("*")
          .from("books")
          .where("author", "=", "José Saramago");
          }

          methodChain(knex)
          .then((rows) => {
          console.log(rows);
          })
          .catch((err) => {
          console.log(err);
          })
          .finally(function() {
          knex.destroy();
          })





          share|improve this answer


























          • This worked by removing those commas inside methodChain. I'm sure you copied from my question, my bad. Thanks!

            – Edgar Ramírez Mondragón
            Nov 14 '18 at 18:59













          • @EdgarR.Mondragón You’re right, I missed that! Glad it works for you, and I’ve removed the extraneous commas now.

            – MTCoster
            Nov 14 '18 at 19:01



















          2














          Sure.



          const methodChain = (x) => x
          .select("*"),
          .from("books"),
          .where("author", "=", "José Saramago");


          then later



          methodChain(knex)
          .then((rows) => {
          console.log(rows);
          })
          .catch((err) => {
          console.log(err);
          })
          .finally(function() {
          knex.destroy();
          })





          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%2f53306953%2fcreate-method-chain-before-object-exists%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









            2














            You could create a function that accepts the initial parameter in the chain:



            function methodChain(in) {
            return in.select("*")
            .from("books")
            .where("author", "=", "José Saramago");
            }

            methodChain(knex)
            .then((rows) => {
            console.log(rows);
            })
            .catch((err) => {
            console.log(err);
            })
            .finally(function() {
            knex.destroy();
            })





            share|improve this answer


























            • This worked by removing those commas inside methodChain. I'm sure you copied from my question, my bad. Thanks!

              – Edgar Ramírez Mondragón
              Nov 14 '18 at 18:59













            • @EdgarR.Mondragón You’re right, I missed that! Glad it works for you, and I’ve removed the extraneous commas now.

              – MTCoster
              Nov 14 '18 at 19:01
















            2














            You could create a function that accepts the initial parameter in the chain:



            function methodChain(in) {
            return in.select("*")
            .from("books")
            .where("author", "=", "José Saramago");
            }

            methodChain(knex)
            .then((rows) => {
            console.log(rows);
            })
            .catch((err) => {
            console.log(err);
            })
            .finally(function() {
            knex.destroy();
            })





            share|improve this answer


























            • This worked by removing those commas inside methodChain. I'm sure you copied from my question, my bad. Thanks!

              – Edgar Ramírez Mondragón
              Nov 14 '18 at 18:59













            • @EdgarR.Mondragón You’re right, I missed that! Glad it works for you, and I’ve removed the extraneous commas now.

              – MTCoster
              Nov 14 '18 at 19:01














            2












            2








            2







            You could create a function that accepts the initial parameter in the chain:



            function methodChain(in) {
            return in.select("*")
            .from("books")
            .where("author", "=", "José Saramago");
            }

            methodChain(knex)
            .then((rows) => {
            console.log(rows);
            })
            .catch((err) => {
            console.log(err);
            })
            .finally(function() {
            knex.destroy();
            })





            share|improve this answer















            You could create a function that accepts the initial parameter in the chain:



            function methodChain(in) {
            return in.select("*")
            .from("books")
            .where("author", "=", "José Saramago");
            }

            methodChain(knex)
            .then((rows) => {
            console.log(rows);
            })
            .catch((err) => {
            console.log(err);
            })
            .finally(function() {
            knex.destroy();
            })






            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Nov 14 '18 at 19:01

























            answered Nov 14 '18 at 18:55









            MTCosterMTCoster

            3,80922141




            3,80922141













            • This worked by removing those commas inside methodChain. I'm sure you copied from my question, my bad. Thanks!

              – Edgar Ramírez Mondragón
              Nov 14 '18 at 18:59













            • @EdgarR.Mondragón You’re right, I missed that! Glad it works for you, and I’ve removed the extraneous commas now.

              – MTCoster
              Nov 14 '18 at 19:01



















            • This worked by removing those commas inside methodChain. I'm sure you copied from my question, my bad. Thanks!

              – Edgar Ramírez Mondragón
              Nov 14 '18 at 18:59













            • @EdgarR.Mondragón You’re right, I missed that! Glad it works for you, and I’ve removed the extraneous commas now.

              – MTCoster
              Nov 14 '18 at 19:01

















            This worked by removing those commas inside methodChain. I'm sure you copied from my question, my bad. Thanks!

            – Edgar Ramírez Mondragón
            Nov 14 '18 at 18:59







            This worked by removing those commas inside methodChain. I'm sure you copied from my question, my bad. Thanks!

            – Edgar Ramírez Mondragón
            Nov 14 '18 at 18:59















            @EdgarR.Mondragón You’re right, I missed that! Glad it works for you, and I’ve removed the extraneous commas now.

            – MTCoster
            Nov 14 '18 at 19:01





            @EdgarR.Mondragón You’re right, I missed that! Glad it works for you, and I’ve removed the extraneous commas now.

            – MTCoster
            Nov 14 '18 at 19:01













            2














            Sure.



            const methodChain = (x) => x
            .select("*"),
            .from("books"),
            .where("author", "=", "José Saramago");


            then later



            methodChain(knex)
            .then((rows) => {
            console.log(rows);
            })
            .catch((err) => {
            console.log(err);
            })
            .finally(function() {
            knex.destroy();
            })





            share|improve this answer




























              2














              Sure.



              const methodChain = (x) => x
              .select("*"),
              .from("books"),
              .where("author", "=", "José Saramago");


              then later



              methodChain(knex)
              .then((rows) => {
              console.log(rows);
              })
              .catch((err) => {
              console.log(err);
              })
              .finally(function() {
              knex.destroy();
              })





              share|improve this answer


























                2












                2








                2







                Sure.



                const methodChain = (x) => x
                .select("*"),
                .from("books"),
                .where("author", "=", "José Saramago");


                then later



                methodChain(knex)
                .then((rows) => {
                console.log(rows);
                })
                .catch((err) => {
                console.log(err);
                })
                .finally(function() {
                knex.destroy();
                })





                share|improve this answer













                Sure.



                const methodChain = (x) => x
                .select("*"),
                .from("books"),
                .where("author", "=", "José Saramago");


                then later



                methodChain(knex)
                .then((rows) => {
                console.log(rows);
                })
                .catch((err) => {
                console.log(err);
                })
                .finally(function() {
                knex.destroy();
                })






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 14 '18 at 18:55









                Mike SamuelMike Samuel

                93.5k23171214




                93.5k23171214






























                    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%2f53306953%2fcreate-method-chain-before-object-exists%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

                    Florida Star v. B. J. F.

                    Danny Elfman

                    Lugert, Oklahoma