从 knex 查询中访问列值

Access column value from within knex query

我想通过对 B 列应用函数来更新 A 列的值。

是否有以下形式的简单解决方案:

knex('table')
    .update({
      colA: func(${colB})
    })

是的,在 Knex 中有一种方法可以做到这一点。

对于在 Knex 中没有明确支持的 SQL 函数,您使用 knex.raw(SQLstring, parmArray) 封装 SQL 片段或 knex.schema.raw(...) 生成整个 SQL 语句。并且您使用单问号 ? 进行值替换,使用双问号 ?? 进行字段标识符替换。 (see link)

所以 SQL: UPDATE table SET colA = func(colB)

... 可以通过包含 SQL 代码段来生成:(你很接近)

knex('table')
    .update({
       colA: knex.raw( 'func(??)', ['colB'] ) 
     })

... 或完整原始 SQL:

knex.schema.raw( 'UPDATE table SET ?? = func(??)', ['colA', 'colB'] )

干杯,加里。