Angular 7 HttpClient: ToPromise не работает с запросом пут - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь создать HTTP-запрос на размещение запросов через экспресс, который вызывает функцию при конкуренции. Я успешно получил вызовы API для обновления базы данных, но функции внутри .then () и .catch () не вызываются. ToPromise () не работает для запросов на ввод?

На внешнем интерфейсе я попытался добавить типы в функцию и определить ее как асинхронную. На сервере я попытался реструктурировать операторы .then () и catch (). Кажется, ничего не работает.

app.component.ts

public async save(): Promise<any> {
    return this.httpClient.put<any>('/api/update-account', {
      name: this.name,
      email: this.email
    }).toPromise()
      .then(() => {
        // Run if successful put request
        success()
      })
      .catch(() => {
        // Run if error
        fallback()
  })
}

server.js

app.put('/api/update-account', (req, res) => {
    let name = req.body.name;
    let email = req.body.email;

    sql.connect(dbConfig).then(() => {
        return sql.query`UPDATE users SET Name=${name} WHERE Email=${email}`
        .then(result => {
            console.log(result);
            sql.close();
        }).catch(err => {
            console.log(err);
            sql.close();
        })
    }).catch(err => {
        console.log(err);
        sql.close();
    })
});

Я ожидаю, что success () или fallback () будут выполняться после запроса API, но ни один из них не вызывается.

1 Ответ

0 голосов
/ 03 июля 2019

Вам необходимо вернуть ответ, используя экспресс. Например:

return res.status(200).send('My value');

Поскольку вы нигде не возвращаете ответ, клиенту ничего не возвращается.

...