当前位置: 首页 > 知识库问答 >
问题:

在UPDATE SET语句中使用命名参数的pgpromise

杭泉
2023-03-14

我想用命名参数实现一个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)

对象字段可能会根据发送的请求而有所不同,因此我不想对中的参数进行“硬编码”。

共有1个答案

席宜修
2023-03-14

pg promise中自动执行 SET 操作的唯一方法是,如果您开始使用多行更新方法,并使用列集。

// create column set statically, once:
const cs = new pgp.helpers.ColumnSet(['?_id', 'name', 'password', 'subscribed', 'email'],
                                     {table: 'accounts'});

当生成更新查询时...

js prettyprint-override">const where = pgp.as.format('WHERE _id = $1', [_id]);
const update = `${pgp.helpers.update(data, cs)} ${where}`;

执行查询:

await db.none(update);
 类似资料:
  • 问题内容: 如何在Java中实现命名参数习语?(特别是对于构造函数) 我在寻找一种类似于Objective-C的语法,而不是在JavaBeans中使用的一种语法。 一个小的代码示例就可以了。 谢谢。 问题答案: 我似乎最喜欢在构造函数中模拟关键字参数的Java惯用语是Builder模式,有效Java 2nd Edition中 对此进行了描述。 基本思想是拥有一个Builder类,该类具有用于不同构

  • 问题内容: 我正在自定义由hibernate生成的插入SQL,并遇到了问题。当Hibernate自己生成查询时,它将数据插入表的前两列,但这会导致数据库错误,因为表的所有四列都是不可为空的。为了正确执行插入,它必须将相同的数据插入到新记录的两列中。这意味着我需要Hibernate将相同的数据绑定到我正在编写的查询(准备好的语句)中的两个不同的参数上。 是否有一些SQL语法可让我以与绑定到绑定语句不

  • 我使用以前的div,现在我想设置一个警报,如果div被移动到最左边。这是div: 现在它的宽度设置为,这是从早期的函数计算出来的。我想提醒时,它的边距左等于。我在js中尝试过这个,但没有运气: 有人能帮我解决这个问题吗?真正头疼的是我不能将更改为。

  • 问题内容: 我想创建一个 存储过程 ,我想在表中插入值。但是我不知道我必须在哪个字段中插入值,而在 运行时,我将决定应在哪个字段中插入值 。我想做的是 如上例所示,是否可以在存储过程中传递这种类型的参数? 我也想使用条件 声明@Query nvarchar(4000)声明@ Query1 nvarchar(4000)声明@ParmDefinition nvarchar(500); Descript

  • 我在TypeScript中使用命名参数时遇到问题。我知道它不支持我在TypeScript中使用它的方式。 但是我该怎么做呢? 打字稿: JavaScript: 我在看(这没有成功): 有没有办法在JavaScript中的函数调用中提供命名参数? 如何将可选的命名参数添加到 TypeScript 函数参数? 我可以在 TypeScript 中做什么,以便在 JavaScript 中使用命名参数? 我

  • 问题内容: 我有一个经典的ASP网站,正在逐步升级。我想创建一个函数来 安全地 更新SQL数据库,而无需手动指定参数。有点动态。 (我不想使用实体框架或Linq) 这是到目前为止的代码: 伪代码(我要实现的目标) 创建一个涵盖所有变量的Ilist {get; 设置:} [在此处验证类型/长度] 对于每个包含值的变量(无验证问题),请创建sql更新字符串。 执行它。 可能的问题: 我可以预见的唯一问