node.js - Angular 7 HttpClient:ToPromise 不适用于 put 请求
问题描述
我正在尝试使用 express 创建一个 HTTP put 请求 API,该 API 在竞争时调用一个函数。我成功获得了更新数据库的 API 调用,但没有调用 .then() 和 .catch() 中的函数。toPromise() 不适用于 put 请求吗?
在前端,我尝试向函数添加类型并将其定义为异步。在后端,我尝试重组 .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()
})
}
服务器.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 请求之后运行,但都没有被调用。
解决方案
您需要使用 express 返回响应。例如:
return res.status(200).send('My value');
因为您不会在任何地方返回响应,所以不会向客户端返回任何内容。
推荐阅读
- java - 如何在单击按钮时更改图像视图大小
- git - Git - 复制没有历史记录的分支
- reactjs - 为什么我必须在 fitBounds 与 @react-google-maps/api 一起使用之前执行两次 fitBounds
- node.js - 你是如何做到的,这样你就不必为描述不和谐机器人提及用户
- c# - C#中的Json数组反序列化问题
- python - 可靠地为 python 应用程序设置工作目录
- python-3.x - Scipy optimize.minimize 多参数
- python - 你如何在python中制作随机照片幻灯片
- android - Android - 离子输入调度超时
- javascript - JavaScript cleartimeout 在调用同一个函数之前