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。 对不起,如果我还不清楚,但如果有人能稍微理解我一点,提供一点帮助会很好,这对我来说很重要,要完成这个。谢谢。

您的代码有两个问题:

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

  2. 第一个修好了,第二个要改,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} ); 
         }
    });
  });
});