繁体   English   中英

KnexJS 查询是如何创建的? 什么最终确定了查询?

[英]How are KnexJS queries created? What finalizes the query?

我正在使用 KnexJS 创建查询。 不过,我对实际完成查询的内容感到困惑。

举个例子,这个查询:

knex('someTable').join('someOtherTable', 'someTable.fid', '=', 'someOtherTable.pid').select('someField');

编写查询的另一种方式:

knex.select('someField').from('someTable').join('someOtherTable', 'someTable.fid', '=', 'someOtherTable.pid')

我不完全理解你什么时候想要方法 1 而不是 2,反之亦然。 但我真正感到困惑的是 knex 如何“知道”查询何时构建完成并且查询实际执行。 任何人都可以对此有所了解吗? 如果最后有某种.build()方法,那将是有意义的。 但没有它,我很困惑。

调用 .then .then()方法时会触发 Knex 查询。 因为async/await关键字在内部调用 Promise 的.then()方法,使用带有 knex 的await关键字 object 也将完成它。 请注意, Promise.all()还将尝试调用传递给它的承诺的 .then( .then()方法,因此Promise.all()也将完成 knex 查询。

所以基本上 knex 查询在以下情况下完成并传输到数据库:

  1. 你称之为.then()方法

  2. 您在其上使用await关键字

  3. 你把它传给Promise.all()

但请注意,(2)和(3)实际上只是(1)的不同版本,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM