knex.js - 如何使用 knexjs 计算表格中的所有空单元格?
问题描述
我有一个有多行的表,每行都有空单元格,我试图将每行中的所有空单元格计算为总数。
表模式 id、名称、colmn1、colmn2、colmn3、colmn4 等......直到 colmn20
我试过做这样的事情
knexDb('users').where(function() {
this.where('colmn1', '=', '')
.orWhere('colmn2', '=', '')
.orWhere('colmn3', '=', '')
.orWhere('colmn4', '=', '')
.orWhere('colmn5', '=', '')
.orWhere('colmn6', '=', '')
.orWhere('colmn7', '=', '')
.orWhere(........ etc till colmn20
})
.map(function(row) {
// console.log(row)
var emptycolmns = 0;
if(row.colmn1 === ''){
emptycolmns++
}else if (row.colmn2 === ''){
emptycolmns++
}else if ....... etc till colmn20
})
.then(rows => {
console.log(rows);
console.log(emptycolmns);
})
但这对我不起作用。
附言。如您所见,对所有列进行硬编码并不好,是否有更好的方法来实现这两个结果,并提供更好的解决方案。
解决方案
我能想到的最接近用空字符串计算列的方法是:
knex.raw(
`select (col1='') + (col2='') + (col3='') as empty_cols from foo`
)
在这里,您依赖于每个表达式都将解析为整数的事实,因此最后您将得到如下结果:
empty_cols
==========
1
3
2
3
1
正如您所指出的,它似乎不太灵活,但是如果不了解更多有关问题的信息,就很难就首选架构提出建议。
推荐阅读
- git-commit - 为什么在 git 中不推送就提交?
- ios - 更新元组数组中的每个键
- python - 两个 32 字节数字的模
- python - 在 api 端点内发出 http 请求
- php - 如何在附件页面上调用图像标题(Wordpress)
- database - 远程mysql可以操作写命令吗?
- android - Android Studio 3.1.4:不支持 java.time.LocalDate"
- javascript - 尝试使用 Node JS 写入套接字时捕获错误
- python - 如何检查 python cv2.imwrite 是否正常工作
- entity-framework - 无法确定一对一关系的孩子/依赖方