【发布时间】:2020-04-18 09:47:15
【问题描述】:
我想用命名参数实现一个 UPDATE SET 语句?有可能吗?
对于像这样的对象:
{
_id: 1,
name: "new_name",
password: "new_password",
subscribed: true,
email: "new_email@email.com"
}
这是我的猜测:
UPDATE
accounts
SET
$(this:name) = $(this:csv)
WHERE
_id = $(this._id)
对象字段可能因发送的请求而异,因此我不想在其中“硬编码”参数。
【问题讨论】:
-
你为什么会这样猜测?图书馆网站上有大量示例,例如 Learn by Example。根据 PostgreSQL 语法,您通常通过逗号列出它们来更新列。在这里使用
this不会为您带来任何魔力。 -
@vitaly-t 我想也许会有某种我可能错过的内置循环。我从文档中知道
this:csv会自动将其转换为.join(",")的一种东西。我还在考虑以某种方式在更新中使用select $(this:csv)。 -
每个过滤器,
:name和:csv确实提供了一些基本的自动化。但是在SET操作的情况下,您需要一个组合。因此,除非您选择 multi-row update approach,否则您必须明确使用这些列。
标签: javascript node.js pg-promise