Wie stoppe ich die Versprechenskette nach der Lösung?

Ich möchte die Versprechenskette stoppen, nachdem sie unter bestimmten Bedingungen gelöst wurde. Der folgende Code ist möglicherweise hilfreich, um zu verstehen, was ich sage.

function update(id, data) {
    return new Promise((resolve, reject) => {
        let conn;

        pool.get()
        .then((db) => {
            conn = db;

            if(Object.keys(data).length === 0) {
                return resolve({ updated: 0 });
            }
            else {
                return generateHash(data.password);
            }
        })
        .then((hash) => {
            conn.query("UPDATE ... ", (err, queryResult) => {
                if(err) {
                    throw err;
                }

                resolve({ updated: queryResult.affectedRows });
            });
        })
        .catch((err) => { ... })
    });
}

Beachten Sie, dass pool.get () eine in Versprechen verpackte API ist, um den Verbindungspool aus dem von mir erstellten MySQL-Modul abzurufen.

Was ich versuche zu tun, ist die Aktualisierung der Benutzerdaten. Und um Serverressourcen zu sparen, habe ich vermieden, zu aktualisieren, wenn keine Daten aktualisiert werden müssen (Object.keys (data) .length === 0).

Wenn ich diesen Code ausprobiert habe, geschieht der zweite Schritt (Aktualisierung der Datenbank) immer, auch wenn keine Daten aktualisiert werden müssen!

Ich lesedieser Beitra, aber es hat nicht funktioniert. Warum wurde die Versprechenskette nicht gestoppt, als ich "return resolve ();" rief? Und wie stoppe ich es richtig? Ich mag es wirklich, Versprechen zu benutzen, aber manchmal machen mich solche Dinge verrückt. Es wird sehr geschätzt, mir dieses Problem zu helfen. Vielen Dank

P.S. Ich benutze trotzdem Node v6.2.2.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage