2017-01-31 2 views
3

Ich verwende pgp.helpers.insert, um Daten in PostgreSQL zu speichern, die gut funktionieren. Ich muss jedoch Werte zurückgeben, um in einer Antwort zu präsentieren. Ich verwende:Zurückgeben von Abfrageergebniswerten mithilfe von pg-promise-Helfern

this.collection.one(this.collection.$config.pgp.helpers.insert(values, null, 'branch')) 

, die keine Daten zurückgibt.

Was ich tun können, wollen, ist die Niederlassung ID nach einem erfolgreichen Einsatz zurückkehren, wie zum Beispiel:

INSERT into branch (columns) VALUES (values) RETURNING pk_branchID 

Antwort

2

einfach hängen Sie die RETURNING... Klausel auf die erzeugte Abfrage:

var h = this.collection.$config.pgp.helpers; 
var query = h.insert(values, null, 'branch') + 'RETURNING pk_branchID'; 

return this.collection.one(query); 

Sie muss ein großes Objekt dort haben, wenn Sie die Einfügung automatisch generieren möchten. Namespace helpers ist vor allem bewertet, wenn mehrreihige Einsätze/Updates zu erzeugen, in welchem ​​Fall ein ColumnSet als statische Variable verwendet wird:

var h = this.collection.$config.pgp.helpers; 
var cs = new h.ColumnSet(['col_a', 'col_b'], {table: 'branch'}); 
var data = [{col_a: 1, col_b: 2}, ...]; 

var query = h.insert(data, cs) + 'RETURNING pk_branchID'; 

return this.collection.many(query); 

Beachten Sie, dass in diesem Fall tun wir .many als 1 oder mehr Zeilen/Ergebnisse erwartet zurück.

return this.collection.map(query, [], a => a.pk_branchID); 

siehe: Database.map

+0

Danke Dies kann sogar in nur eine Reihe von id-s umgewandelt werden. Ursprünglich hatte ich die SQL in einer Datei, dachte aber, dass ich auf diese Weise verwenden sollte, um Spaltenwerte zu berücksichtigen, die Null sein können, die in der Anfrage fehlen könnten. – Faz

Verwandte Themen