我正在尝试使用Express创建HTTP放置请求API,该API在竞争时会调用函数。我成功获得了用于更新数据库的API调用,但未调用.then()和.catch()中的函数。 toPromise()是否不适用于放置请求?
在前端,我尝试将类型添加到函数中并将其定义为异步。在后端,我尝试重组.then()和catch()语句。似乎没有任何作用。
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()
})
}
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();
})
});
我希望在API请求之后运行success()或fallback(),但不会被调用。
答案 0 :(得分:0)
您需要使用express返回响应。例如:
return res.status(200).send('My value');
因为您在任何地方都没有返回响应,所以没有任何内容返回给客户端。