如何使用 knex 进行插入忽略
查询?
我尝试过:
knex.raw(knex('music').insert({title: service[i].Title, author: service[i].PrimaryArtistName, album: service[i].TypeAlbumName, lyrics: service[i].Lyrics}).toString().replace("insert", 'insert ignore'));
但是这不起作用
更新: 如果我添加它的工作
.then(function (res) {
console.log("res", res);// or another code
});
但它的方式正确吗?
最佳答案
正在进行拉取请求,以在 knex API 中正式支持这一点。我希望它能为下一个版本做好准备 https://github.com/tgriesser/knex/pull/2197 .
您永远不应该使用 .toString()
来构建查询,因为它可能很容易给您的代码留下 SQL 注入(inject)漏洞,尤其是在插入时。
一开始它没有执行任何操作,因为您从未触发查询。
目前您可以实现同样更安全的方式,如下所示:
const query = knex('music')
.insert({
title: service[i].Title,
author: service[i].PrimaryArtistName,
album: service[i].TypeAlbumName,
lyrics: service[i].Lyrics
}).toSQL();
const sql = query.sql.replace("insert", 'insert ignore');
knex.raw(sql, query.bindings).then(() => console.log('insert is ready'));
关于javascript - 我无法使插入忽略查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46400332/