Если вы не звоните then()
, у вас все еще есть построитель запросов, который все еще можно изменить.
var q = knex("requests");
q.toString();
// 'select * from "requests"
q.where('id', 1).toString();
// 'select * from "requests" where "id" = 1'
q.orderBy('bar').toString();
// 'select * from "requests" where "id" = 1 order by "bar" asc'
// now query is actually executed and converted to promise
var promise = q.then(res => console.log('got', res));
Так построитель запросов - это то, что обещание Promise A + then thenable. Его можно использовать для сборки запроса по частям, и построенный запрос не запускается, пока пользователь не захочет его запускать.
Одна вещь, которая хороша в следующих действиях, заключается в том, что если вы вернете их из обещания, их функция будет вызвана и запрос будет вызван.
Так это работает без вызова затем внутреннего запроса:
knex('mydata').then(() => {
return knex('otherdata'); // no need to call .then here
}).then(otherDataResults => {
console.log(otherDataResults);
});