Knex: Пользовательские функции построителя

Созданный на 15 июл. 2016  ·  3Комментарии  ·  Источник: knex/knex

Я хотел бы добавить в 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;
}

но, очевидно, проверка того, сколько записей будет возвращено, должна произойти после того, как результаты вернутся

Сможете ли вы указать мне правильное направление?

planned for 1.0

Самый полезный комментарий

@tgriesser Я жду эту функцию QueryBuilder . Было бы здорово иметь интерфейс для расширения конструктора запросов.

👍

Все 3 Комментарий

Просто к вашему сведению. Этот код не будет работать в 0.12, вам потребуется knex/lib/query/builder напрямую, чтобы изменить этот прототип.

Для версии 1.0 я планирую определить стандартный способ настройки цепочки построителя запросов, как вы пытаетесь сделать выше, и с добавлением «крючков» вы сможете легко настраивать преобразования пост-результатов.

@tgriesser Я жду эту функцию QueryBuilder . Было бы здорово иметь интерфейс для расширения конструктора запросов.

👍

@tgriesser - Насколько мы далеки от 1.0?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги