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