【发布时间】:2021-12-21 16:44:10
【问题描述】:
我刚开始学习 Node.js / Express,但我仍然无法使用异步功能。我制作了一些函数来与 postgresql 数据库交互(带有一些教程),并且从数据中选择行很好,但由于某种原因,删除行会发生一些事情。下面是一个运行良好的函数示例:
const getPlayers = () => {
return new Promise(function(resolve, reject) {
pool.query('SELECT * FROM Players ORDER BY p_id ASC', (error, results) => {
if (error) {
reject(error)
}
resolve(results.rows);
})
})
}
现在下面的功能不顺利。 Console.log(id) 给出了正确的数字,但执行查询时似乎未定义 id,我怀疑它与异步/同步有关。现在异步对我来说是新的,所以我也不是什么问题的专家。 以下是运行良好的函数:
const deletePlayer = (id) => {
return new Promise(function(resolve, reject) {
pool.query('DELETE FROM Players WHERE player_id = ?' , [id], (error,results) => {
if (error) {
reject(error)
}
resolve(`Player deleted with ID: ${id}`)
})
})
}
函数调用:
app.delete('/laProjects/:id', (req, res) => {
players_model.deletePlayers(req.params.id)
.then(response => {
res.status(200).send(response);
})
.catch(error => {
res.status(500).send(error);
})
})
【问题讨论】:
-
仅供参考,它是“异步”和“同步”,没有“h”。另外,我在您的代码中没有看到任何
async(带有或不带有“h”),那么您是如何收到该错误的? -
是
deletePlayersvsdeletePlayer的问题吗? -
代码看起来有效。您是否多次删除了相同的值?
-
对不起,deletePlayers/deletePlayer 在代码中很好,我只是为这个问题更改了函数名称,这样更容易阅读!
标签: javascript sql node.js express asynchronous