javascript - 在未定义中绑定时 Knex 抛出错误
问题描述
我正在使用Nodejs 版本 12.14.1和Knex 版本 0.20.8
在Knex文档中,他们告诉在 where 查询中绑定未定义 knex 是否会引发错误。有没有办法忽略或绕过它?
我尝试"useNullAsDefault": true,
在我的 knex 文件中使用参数,但它没有帮助
SQL 示例
knex('accounts')
.where('login', undefined)
.select()
.toSQL()
错误
编译 SELECT 时检测到未定义的绑定。未定义的列:[login] 查询:select * from accounts
where login
= ?
解决方案
您可以发送一个函数作为 的参数where
,您可以检查您的变量是否未定义,这样您就不会生成where
没有要比较的值的 a:
let login = undefined
knex('accounts')
.where((builder) => {
if (login) {
builder.where('login', login)
}
})
.select()
.toSQL()
如果login
是undefined
,则 sql 将是:
select *
如果你设置login = 'test'
,则 sql 将是:
select * where ("login" = ?)
具有test
价值bindings
推荐阅读
- android-studio - Android E/MediaPlayerNative:错误 (1, -1010) 停止直播
- angularfire2 - 如何设置 AngularFire CRUD 操作?
- python - 使用 HERE 地图根据 gps 坐标获取道路类型
- dataframe - 如何找到两列之间的差异 [col1-col2]
- makefile - Windows 10 Makefile source 系统找不到指定的文件
- php - 如何在字符串中的单词后获取单词
- python - 我尝试了几种不同的方法来加入这个字符串并不断收到语法错误。谁能告诉我我做错了什么?
- reactjs - 反应useCallback不更新功能
- javascript - 无法在我的 html 上显示第三个幻灯片
- spring-boot - 强制验证注解提供消息