Как остановить цепочку обещаний после разрешения?

Я хочу прекратить цепочку обещаний после того, как она разрешится через некоторые условия Ниже приведенный код может быть полезен для понимания того, что я говорю.

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) => { ... })
    });
}

Обратите внимание, что pool.get () - это обернутый в обещание API для получения пула соединений из модуля MySQL, который я создал.

Я пытаюсь обновить пользовательские данные. И для сохранения ресурсов сервера я избегал обновлений, если нет данных для обновления (Object.keys (data) .length === 0).

Когда я попробовал этот код, то во-вторых (обновление БД) всегда происходит, даже если нет данных для обновления!

Я читаюэта почта, но это не сработало. Почему цепочка обещаний не была остановлена, когда я вызвал «return resol ();»? И как мне это правильно остановить? Мне действительно нравится использовать Promises, но иногда такие вещи сводят меня с ума. Будет очень полезно помочь мне решить эту проблему. Спасибо!

Постскриптум В любом случае я использую узел v6.2.2.

Ответы на вопрос(2)

Ваш ответ на вопрос