Aktualisieren mehrerer Zeilen mit node-mysql, NodeJS und Q

Ich verwende Node-Mysql, Node-Js und Q-Versprechen.

Ich habe einzelne Zeilen mit den oben genannten Methoden erfolgreich aktualisiert, gelöscht und eingefügt. Sowie in meinem Testfall-Szenario mehrere Zeilen in einer einzigen Anweisung eingefügt.

Ich muss jedoch mehrere Zeilen mit unterschiedlichen Werten (Batch-Modus) entweder in einer einzelnen Abfrage oder in einer for-Schleife aktualisieren.

Die Informationen zur Verwendung von vorbereiteten Anweisungen in mysql2 (die eine Verbesserung von node-mysql bewirken sollen) sind sehr spärlich und es gibt keine Beispiele, obwohl dies die natürliche Wahl sein sollte, zusammen mit Versprechen, die asynchrone Natur von node-j zu kompensieren.

Außerdem habe ich defered.makeNodeResolver () in verschiedenen Testszenarien erfolgreich eingesetzt.

Ich versuche, mehrere Zeilen in einer einzelnen Abfrage mit einer where-Klausel und sich ändernden Bedingungen zu aktualisieren.

Es funktioniert, wenn ich eine einzelne Zeile aktualisiere. Wenn ich jedoch versuche, mehrere Zeilen mit einer einzigen Abfrage zu aktualisieren, werden die Datensätze nicht aktualisiert.

Ich bin bereit, auf die Verwendung einer for-Schleife umzuschalten, um mehrere Aktualisierungen durchzuführen, und dann das Ergebnis zu aggregieren und es vom Server an den Client zurückzusenden, was meine zweite bevorzugte Wahl gewesen wäre. Und ich verstehe nicht, warum das nicht so gemacht werden sollte, wenn es nicht zu viel Leistung gibt. Aber ich habe keine Beispiele dafür gefunden.

var values = [
    { users: "tom", id: 101 },
    { users: "george", id: 102 }
    ];

    // var params = [values.users, values.id ];

    var sql = 'UPDATE tabletest SET users = ? WHERE id = ?;';


    connection.query(sql, [{users: values[0].users}, {id: values[0].id }], defered.makeNodeResolver());

Der oben gezeigte Code aktualisiert nicht wirklich mehrere Zeilen. Ich stelle mir einen Fehler in meiner Syntax vor.

Aber was ist in diesem speziellen Szenario der beste Ansatz dafür? Vorbereitete Anweisungen, wiederholte Abfragen in einer for-Schleife oder gespeicherte Prozeduren?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage