node.js - 如果postgresql中不存在如何删除

标签 node.js postgresql postman

for (var i in req.body.categories) {
  db.query("DELETE FROM guide_categories WHERE NOT IN($1) AND guide_id = $1",[req.body.categories[i],req.params._id], function(err, data) {
    if (err) console.log(err);
    console.log('updated');
  })                                
}

如果数组中不存在,我正在尝试删除,我正在从 postman 那里传递数组,如 categories:["3","2","1"]。如何做到这一点??

最佳答案

3 个错误:

  1. category 前面的列名( IN ?)查询中缺少,使语句成为非法语法。

  2. 您正在使用相同的参数 $1两次。第二个应该是$2 .

  3. IN()构造需要值列表或子查询,不是数组。传递数组时,使用 <> ALL()相反。

这个查询应该有效:

DELETE FROM guide_categories
WHERE category <> ALL($1)
AND guide_id = $2;

不过要小心 NULL 值!
详情:

关于node.js - 如果postgresql中不存在如何删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48063747/

相关文章:

django - 在 Google Compute Engine Debian 7 实例上安装 Django、PostgreSQL

函数返回一个节点的所有子节点的表

javascript - 如何从 javascript 数组响应中获取行?

azure - 如何使用 Postman 将文件上传到 Azure Blob 存储?

php - JSON 原始 POST cURL 请求不起作用

node.js - 多个回调会降低nodejs性能吗?

node.js - 部署 Typescript NodeJS 服务器

javascript - 如果没有为 post 请求中的 'data' 事件创建事件处理程序,会发生什么情况?

javascript - 如何将用户重定向到 Node.js 中的另一个链接?

postman 控制台输出可点击的 URL