REST API 与 node.js CRUD 与 Postgres 数据库
REST API with node.js CRUD with Postgres Database
除了 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 = 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=() WHERE id=()', [data1.name], [request.params.id]);
pg.connect(process.env.DATABASE_URL, function(err, client, done) {
client.query('SELECT * FROM test2 WHERE = 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 时,首先它会显示数据,包括名称,但它会从数据库中删除,然后即使我单击原始然后编辑数据,然后发送它,它也不会保存,它 returns 为 null,name = null。
对不起,如果我还不清楚,但如果有人能稍微理解我一点,提供一点帮助会很好,这对我来说很重要,要完成这个。谢谢。
您的代码有两个问题:
您调用 done()
,在调用更新查询之前断开与数据库的连接,然后在与数据库断开连接时调用 client.query
。
第一个修好了,第二个要改,update把function(err, result)
作为最后一个参数,根据结果响应。如果异步调用是同步调用,则不能像您在那里那样对待异步调用。一旦完成,您就可以调用 done()
.
如果您想简化数据库的使用,请查看 pg-promise。
我想要实现的是,如果我在 Postman throw json 的正文中输入数据,数据库将使用该数据进行更新,并将显示数据库中的新数据以及已经存在的数据数据库。
这是我解决的代码:
apiRoutes.put('/db', function(request, response){
pg.connect(process.env.DATABASE_URL, function(err, client, done) {
var data1 = {id: request.body.id, name: request.body.name, lastname: request.body.lastname, address: request.body.address, phonenumber: request.body.phonenumber, email: request.body.email};
//Update data in the database
client.query("UPDATE Contact SET name = , lastname = , address = , phonenumber = , email = WHERE id = ", [data1.name, data1.lastname, data1.address, data1.phonenumber, data1.email, data1.id]);
//Display after updated
client.query('SELECT * FROM Contact;', function(err, result) {
done();
if (err){
console.error(err); response.json({success:"false", message: err});
}
else{
response.json({success:"Data updated successfuly in the database.", data: result.rows} );
}
});
});
});
除了 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 = 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=() WHERE id=()', [data1.name], [request.params.id]);
pg.connect(process.env.DATABASE_URL, function(err, client, done) {
client.query('SELECT * FROM test2 WHERE = 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 时,首先它会显示数据,包括名称,但它会从数据库中删除,然后即使我单击原始然后编辑数据,然后发送它,它也不会保存,它 returns 为 null,name = null。 对不起,如果我还不清楚,但如果有人能稍微理解我一点,提供一点帮助会很好,这对我来说很重要,要完成这个。谢谢。
您的代码有两个问题:
您调用
done()
,在调用更新查询之前断开与数据库的连接,然后在与数据库断开连接时调用client.query
。第一个修好了,第二个要改,update把
function(err, result)
作为最后一个参数,根据结果响应。如果异步调用是同步调用,则不能像您在那里那样对待异步调用。一旦完成,您就可以调用done()
.
如果您想简化数据库的使用,请查看 pg-promise。
我想要实现的是,如果我在 Postman throw json 的正文中输入数据,数据库将使用该数据进行更新,并将显示数据库中的新数据以及已经存在的数据数据库。 这是我解决的代码:
apiRoutes.put('/db', function(request, response){
pg.connect(process.env.DATABASE_URL, function(err, client, done) {
var data1 = {id: request.body.id, name: request.body.name, lastname: request.body.lastname, address: request.body.address, phonenumber: request.body.phonenumber, email: request.body.email};
//Update data in the database
client.query("UPDATE Contact SET name = , lastname = , address = , phonenumber = , email = WHERE id = ", [data1.name, data1.lastname, data1.address, data1.phonenumber, data1.email, data1.id]);
//Display after updated
client.query('SELECT * FROM Contact;', function(err, result) {
done();
if (err){
console.error(err); response.json({success:"false", message: err});
}
else{
response.json({success:"Data updated successfuly in the database.", data: result.rows} );
}
});
});
});