首页 > 解决方案 > Postgres Express 和 Node JS API - 一个 API 端点中的多个查询

问题描述

我有一个 postgres 数据库,我在三个数据库表中插入数据。因为我想通过单击一个按钮将这些数据插入到所有三个表中,所以我不想要三个不同的 API 端点。由于我是 node js 和 postgres 的新手,我无法将所有三个查询放在一个 api 端点中。直到现在我被困在这个 -

app.post("/input",async(req,res)=>{
    try{
        const {a,b,c,d,e,f,g,h,i}= req.body;
        const newentry=await pool.query(
            "INSERT INTO num(a,b,c) VALUES($1,$2,$3) RETURNING *",
            [a,b,c],
            'INSERT INTO order(d,e,f) VALUES ($1,$2,$3) RETURNING *' ,
            [d,e,f],
            'INSERT INTO quantity(g,h,i) VALUES ($1,$2,$3) RETURNING *' ,
            [g,h,i]

            );

         
            res.json(newentry.rows[0]);
           

        
    } catch(err){
        console.error(err.message);
    }
});

标签: sqlnode.jspostgresqlsql-insertcommon-table-expression

解决方案


你似乎想要公用表表达式:

with 
    nums   as (insert into num (a, b, c)     values($1, $2, $3)),
    orders as (insert into "order" (d, e, f) values ($1, $2, $3)
insert into quantity (g, h, i) values ($1, $2, $3);

这允许在单个语句中运行三个插入查询。

returning在这里没有真正意义:您希望从这三个语句中返回哪些值?返回插入的值不是一种明智的方法:由于您首先传递了这些值,因此您已经知道这些值。


推荐阅读