javascript - 对数组中的每个对象运行 PostgreSQL UPDATE 查询

标签 javascript arrays node.js postgresql massivejs

假设我有一车杂货,每件商品都有一个唯一的 ID。当有人单击“购买”时,将发送一个数组,其中包含该购物车中每个项目的对象。购物车各不相同,因此有时可能是 2 件商品,有时是 6 件商品,等等。

例子:

[{id: 1, amt_purchased: 3}, {id: 2, amt_purchased: 4}]

我需要我的 SQL 表“可用的杂货商品”根据购买的商品进行更新。

对于一件杂货,我会使用以下内容:

UPDATE available 
SET amt_avail = amt_avail - 3
WHERE produce_id = 1

由于我现在有多个项目,我怎样才能让查询针对每个已购买的项目运行?或者作为一个将根据购买的商品数量进行调整的大规模查询?

我的项目是 Ionic/AngularJs 和 NodeJs、Express、MassiveJs。

谢谢大家!还是菜鸟,所以我很难解释我需要什么。

最佳答案

PostgreSQL 有一个 excellent feature UPDATE ... FROM ...; 提供了一种在另一个表上更新一个表的便捷方法。第二个出色的功能 - 您可以在此查询中使用伪表 VALUES:

UPDATE available a
SET amt_available = a.amt_available + v.amt_available
FROM (
  VALUES (1, 25), (3, 15), (7, -55)   -- just pass required values
) AS v (produce_id, amt_available)
WHERE a.produce_id=v.produce_id;

这是一个用于检查想法的 SQLFiddle - http://sqlfiddle.com/#!17/04f24/22

关于javascript - 对数组中的每个对象运行 PostgreSQL UPDATE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44874288/

相关文章:

javascript - 如何在响应式网站中创建连接两个图像的线?

javascript - 无法强制聚焦于输入

c++ - 将 int 数组转换为可变参数模板

javascript - 使用数学运算符循环对字符串数组(内部有数字)执行数学运算

node.js - Mongoose 仅​​在更改时验证

javascript - 更新/重绘折线图时 dc.js 出现问题

javascript - Canvas 'drawImage' 返回 ' No function was found that matched the signature provided.'

objective-c - 如何将 [数组计数] 粘贴到 case :

javascript - node.js - 使结果全局可用(请求模块)

javascript - 有没有办法从 AngularJS Controller 发出 CLI 命令?