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?
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?
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.👍