Я хотел бы добавить в knex несколько пользовательских функций, которые мне приходится использовать все время, но мне трудно заставить их работать.
Они есть:
knex.selectOne
knex.selectZeroOrOne
Вместо того, чтобы делать сначала, selectOne не применяет ограничение и вместо этого выдает ошибку, если возвращается более одной записи. Это позволяет автору выявлять конкретные ошибки на раннем этапе.
Я начал с:
knex.client.QueryBuilder.prototype.selectOne = function (columns) {
const args = new Array(arguments.length);
for (let i = 0; i < args.length; i++) {
args[i] = arguments[i];
}
this.select.apply(this, args);
this._method = 'first';
//this.limit(1);
return this;
}
но, очевидно, проверка того, сколько записей будет возвращено, должна произойти после того, как результаты вернутся
Сможете ли вы указать мне правильное направление?
Просто к вашему сведению. Этот код не будет работать в 0.12, вам потребуется knex/lib/query/builder
напрямую, чтобы изменить этот прототип.
Для версии 1.0 я планирую определить стандартный способ настройки цепочки построителя запросов, как вы пытаетесь сделать выше, и с добавлением «крючков» вы сможете легко настраивать преобразования пост-результатов.
@tgriesser Я жду эту функцию QueryBuilder
. Было бы здорово иметь интерфейс для расширения конструктора запросов.
👍
@tgriesser - Насколько мы далеки от 1.0?
Самый полезный комментарий
@tgriesser Я жду эту функцию
QueryBuilder
. Было бы здорово иметь интерфейс для расширения конструктора запросов.👍