Node.js:将插入的行从 PostgreSQL v.11 返回到浏览器

Qui*_*inn 4 postgresql post node.js

我是 Node.js 和 PostgreSQL 的新手。

我正在创建一个带有插入查询的发布请求。
如何同时将插入的值返回到浏览器?

app.post('/car_create', (req, res) => {
    const make = req.body.create_make;
    const model = req.body.create_model;

        client.query(`INSERT INTO cars (make, model) VALUES ($1, $2)`, [make, model], (error, results) => {
            if (error) {
                throw error
            }
            res.status(201).send(`Car added with ID: ${results};`);
            console.log(res);
            res.end();
        });
}); 
Run Code Online (Sandbox Code Playgroud)

我如何从响应中检索数据?
我需要以某种方式修改这一行吗?

            res.status(201).send(`Car added with ID: ${results};`);       
Run Code Online (Sandbox Code Playgroud)

Sam*_*duc 6

首先,您需要在将值插入 PostgreSQL 后返回它们。为此,请RETURNING在查询中添加一个子句,如下所示:INSERT INTO cars (make, model) VALUES ($1, $2) RETURNING id, make, modelRETURNING如果您有并且需要更多列,请在子句中添加更多列。

然后在回调中,results变量应该包含有关您的查询的信息,包括它返回的内容(在rows键中)。您可以通过多种方式将其发送给客户端,但要以与当前类似的方式返回它,您可以这样做:

const {id, make, model} = result.rows[0]; // rows is an array of rows returned, and since we do a single INSERT we only have one row, with the returned columns from the query
res.status(201).send(`Car added with ID ${id}, make "${make}" and model "${model}".`);
Run Code Online (Sandbox Code Playgroud)

如果您想在前端使用此数据,以 JSON 形式发送数据会更容易、更方便,如下所示:res.status(201).send(results.rows[0]);