Knex: Funções Custom Builder

Criado em 15 jul. 2016  ·  3Comentários  ·  Fonte: knex/knex

Eu gostaria de adicionar algumas funções personalizadas ao knex que tenho que usar o tempo todo, mas estou achando difícil fazê-las funcionar.

Eles são:
knex.selectOne
knex.selectZeroOrOne

Em vez de fazer primeiro, selectOne não aplica um limite e, em vez disso, gera um erro se obter mais de um registro de volta. Isso permite que o autor detecte erros específicos com antecedência.

Comecei com:

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;
}

mas, obviamente, a verificação de quantos registros são devolvidos tem que acontecer depois que os resultados voltam

Você seria capaz de me apontar na direção certa?

planned for 1.0

Comentários muito úteis

@tgriesser Estou esperando por este recurso há algum tempo e começo a modificar o protótipo QueryBuilder . Será ótimo ter uma interface para estender o construtor de consultas.

👍

Todos 3 comentários

Apenas para sua informação Este código não funcionará no 0.12, você precisará exigir knex/lib/query/builder diretamente para modificar esse protótipo.

Para 1.0, planejarei definir uma maneira padrão de personalizar a cadeia do construtor de consulta, como você está tentando fazer acima, e com a adição de "ganchos", você poderá configurar facilmente as transformações pós-resultado.

@tgriesser Estou esperando por este recurso há algum tempo e começo a modificar o protótipo QueryBuilder . Será ótimo ter uma interface para estender o construtor de consultas.

👍

@tgriesser - A que distância estamos do 1.0?

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

tjwebb picture tjwebb  ·  3Comentários

mishitpatel picture mishitpatel  ·  3Comentários

nklhrstv picture nklhrstv  ·  3Comentários

legomind picture legomind  ·  3Comentários

hyperh picture hyperh  ·  3Comentários