Wie ich bereits hier On Stackoverflow ist es möglich, mehrere Zeilen in einer Abfrage zu aktualisieren, indem Sie so etwas wie dieserPostgreSQL mehrreihigen Updates in Node.js
update test as t set
column_a = c.column_a,
column_c = c.column_c
from (values
('123', 1, '---'),
('345', 2, '+++')
) as c(column_b, column_a, column_c)
where c.column_b = t.column_b;
besondere Dank an @Roman Pekar für die klare Antwort zu tun .
Jetzt versuche ich diese Art der Aktualisierung mit Abfragen zu einer PostgreSQL-Datenbank in NodeJS zusammenführen.
hier ein snipped meines Code ist:
var requestData = [
{id: 1, value: 1234}
{id: 2, value: 5678}
{id: 3, value: 91011}
]
client.connect(function (err) {
if (err) throw err;
client.query(buildStatement(requestData), function (err, result) {
if (err) throw err;
res.json(result.rows);
client.end(function (err) {
if (err) throw err;
});
});
});
var buildStatement = function(requestData) {
var params = [];
var chunks = [];
for(var i = 0; i < requestData.length; i++) {
var row = requestData[i];
var valuesClause = [];
params.push(row.id);
valuesClause.push('$' + params.length);
params.push(row.value);
valuesClause.push('$' + params.length);
chunks.push('(' + valuesClause.join(', ') + ')');
}
return {
text: 'UPDATE fit_ratios as f set ratio_budget = c.ratio_budget from (VALUES ' + chunks.join(', ') + ') as c(ratio_label, ratio_budget) WHERE c.ratio_label = f.ratio_label', values: params
}
}
ich nicht einen Fehler, aber es ist meine Tabelle nicht aktualisiert, ich weiß nicht wirklich, was hier schief geht. Vielleicht ein Syntaxfehler in meinem Abfragecode? Ich finde einfach keine speziellen Beispiele für mehrreihige Abfrage-, wenn in NodeJS pg Paket aktualisiere