I'm using KnexJS to create queries. I'm confused on what actually finalizes the query though.
Take for instance, this query:
knex('someTable').join('someOtherTable', 'someTable.fid', '=', 'someOtherTable.pid').select('someField');
The other way to write the query:
knex.select('someField').from('someTable').join('someOtherTable', 'someTable.fid', '=', 'someOtherTable.pid')
I don't fully understand when you would want to do Method 1 over 2, and vice versa. But what I'm really confused about is how knex "knows" when the query is done being built and the query is actually executed. Can anyone shed some light on this? It would make sense if there was some sort of .build() method at the end. But without it, I'm confused.
Knex query gets triggered when it's .then() method is called. Because the async/await keyword internally calls a Promise's .then() method using the await keyword with a knex object will also finalize it. Note that Promise.all() will also try to call the .then() method of promises passed to it so Promise.all() will also finalize a knex query.
So basically knex queries gets finalized and transmitted to the database when:
you call it's .then() method
you use the await keyword on it
you pass it to Promise.all()
But note that (2) and (3) are actually just different versions of (1),