编程语言
首页 > 编程语言> > javascript-从选择插入Knex.js

javascript-从选择插入Knex.js

作者:互联网

我正在尝试通过Knex.js生成如下查询:

INSERT INTO table` ("column1", "column2")
SELECT "someVal", 12345)
WHERE NOT EXISTS (
    SELECT 1
    FROM table
    WHERE "column2" = 12345
)

基本上,我只想在不存在特定值的情况下插入值.但是Knex.js似乎不知道该怎么做.如果我调用knex.insert()(无值),它将生成“插入默认值”查询.

我尝试了以下方法:

pg.insert()
                .into(tableName)
                .select(_.values(data))
                .whereNotExists(
                    pg.select(1)
                        .from(tableName)
                        .where(blah)
                );

但这仍然只是默认值.我尝试添加一个.columns(Object.keys(data)),希望insert()能兑现这一点,但不走运.

是否可以使用knex生成我想要的查询,还是只需要构建一个没有Knex.js方法的原始查询?

解决方法:

我相信选择需要传递到插入:

pg.insert(knex.select().from("tableNameToSelectDataFrom")).into("tableToInsertInto");

同样,为了选择常量值或表达式,您还需要在select中使用knex.raw表达式:

knex.select(knex.raw("'someVal',12345")).from("tableName")

这是我的第一篇文章,我没有测试您的特定示例,但是我已经完成了类似的事情,例如您使用上述技术所要求的.

标签:knex-js,node-js,javascript
来源: https://codeday.me/bug/20191028/1952269.html