Knex: Benutzerdefinierte Builder-Funktionen

Erstellt am 15. Juli 2016  ·  3Kommentare  ·  Quelle: knex/knex

Ich würde gerne einige benutzerdefinierte Funktionen zu Knex hinzufügen, die ich ständig verwenden muss, aber es fällt mir schwer, sie zum Laufen zu bringen.

Sie sind:
knex.selectOne
knex.selectZeroOrOne

Anstatt dies zuerst zu tun, wendet selectOne kein Limit an und gibt stattdessen einen Fehler aus, wenn mehr als ein Datensatz zurückgegeben wird. Dadurch kann der Autor bestimmte Fehler besonders früh erkennen.

Ich habe angefangen mit:

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

Aber natürlich muss die Überprüfung, wie viele Datensätze zurückgegeben werden, erfolgen, nachdem die Ergebnisse zurückgekommen sind

Könnten Sie mir den richtigen Weg weisen?

planned for 1.0

Hilfreichster Kommentar

@tgriesser Ich warte eine Weile auf diese Funktion und beginne mit der Modifikation des QueryBuilder Prototyps. Es wird so toll sein, eine Schnittstelle zu haben, um den Query Builder zu erweitern.

👍

Alle 3 Kommentare

Nur zur Info Dieser Code wird in 0.12 nicht funktionieren, Sie müssen knex/lib/query/builder direkt anfordern, um diesen Prototyp zu ändern.

Für 1.0 plane ich, eine Standardmethode zum Anpassen der Abfrageerstellungskette zu definieren, wie Sie es oben versuchen, und mit dem Hinzufügen von "Hooks" können Sie ganz einfach Transformationen nach dem Ergebnis einrichten.

@tgriesser Ich warte eine Weile auf diese Funktion und beginne mit der Modifikation des QueryBuilder Prototyps. Es wird so toll sein, eine Schnittstelle zu haben, um den Query Builder zu erweitern.

👍

@tgriesser - Wie weit sind wir von 1.0 entfernt?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen