gpt4 book ai didi

javascript - REST API 与 Node.js CRUD 与 Postgres 数据库

转载 作者:行者123 更新时间:2023-12-03 09:20:02 24 4
gpt4 key购买 nike

除了 CRUD 操作之外,我是 Node.js 和 javascript 的新手。我想使用带有 postgresql 数据库的node.js 创建一个rest api,以便 PUT POST UPDATE DELETE 方法通过 JSON 工作。抱歉,如果我的问题不清楚,但这就是我所拥有的以及我无法完成的。

apiRoutes.get('/db/:id', function(request, response){
pg.connect(process.env.DATABASE_URL, function(err, client, done) {
client.query('SELECT * FROM test2 WHERE $1 = test2.id;', [request.params.id], function(err, result) {
done();
if (err){
console.error(err); response.json({success:"false", message: err});
}
else{
response.json({success: "true", data: result.rows} );
}
});
});
});

这是通过 PUT 方法更新数据库数据的代码。

 apiRoutes.put('/db/:id', function(request, response){
var data1 = {name: request.body.name};
client.query('UPDATE test2 SET name=($1) WHERE id=($2)', [data1.name], [request.params.id]);
pg.connect(process.env.DATABASE_URL, function(err, client, done) {
client.query('SELECT * FROM test2 WHERE $1 = test2.id', [request.params.id], function(err, result) {

done();
if (err){
console.error(err); response.json({success:"false", message: err});
}
else{

response.json({success:"true", data: result.rows} );
}
});
});
});

当我在Postman中单击PUT时,首先它会显示数据,包括名称,但它会从数据库中删除,然后即使我单击原始然后编辑数据,然后发送它,它也不会保存它,它返回为null ,名称=空。抱歉,如果我没有说清楚,但如果有人稍微理解我,一点帮助就会很大,这对我来说很重要,完成这个。谢谢。

最佳答案

您的代码中有两个问题:

  1. 您调用 done(),在调用更新查询之前断开与数据库的连接,然后在与数据库断开连接时调用 client.query

  2. 修复第一个后,必须更改第二个,用于更新,以 function(err, result) 作为最后一个参数,并根据结果进行响应。您不能将异步调用视为同步调用,就像您在那里所做的那样。一旦完成,您就可以调用 done()

如果您想简化数据库使用,请查看 pg-promise .

关于javascript - REST API 与 Node.js CRUD 与 Postgres 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31866948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com