sql - 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);
}
});
解决方案
你似乎想要公用表表达式:
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
在这里没有真正意义:您希望从这三个语句中返回哪些值?返回插入的值不是一种明智的方法:由于您首先传递了这些值,因此您已经知道这些值。
推荐阅读
- java - Camel CXF - 操作输出解组错误
- javascript - 倒数计时器多项
- java - How to parse 2018-06-19T05:50:31.000+0000 date string to Date
- python - Selenium ConnectionAbortedError
- azure - 什么在请求我的 azure servicebus 队列
- optimization - Julia 的 Optim.jl 包无法执行盒装优化
- php - 如何在 Laravel 中检查多个 url 的状态
- jquery - 使用 jQuery 重新组织项目
- r - mclapply 与 lme4 和长向量
- drupal - 5 次尝试失败后 Drupal 需要多长时间才能解除对用户的阻止?