REST API与node.js CRUD与Postgres数据库

REST API with node.js CRUD with Postgres Database

本文关键字:Postgres 数据库 CRUD node API REST js      更新时间:2023-09-26

我是新的node.js和javascript除了CRUD操作。我想用node.js与postgresql数据库创建一个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} ); 
         }
    });
  });
});

当我点击PUT在邮差,首先它显示的数据,包括名称,但它从数据库中删除,然后即使我点击raw然后编辑数据,然后发送它,它不会保存,它返回到null, name = null。对不起,如果我没有说清楚,但如果有人理解我只是一点,一点帮助将是伟大的,这对我来说很重要,完成这个。谢谢你。

你的代码中有两个问题:

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

  2. 修复第一个参数后,必须更改第二个参数,以便更新,将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 = $1, lastname = $2, address = $3, phonenumber = $4, email = $5 WHERE id = $6", [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} ); 
         }
    });
  });
});