我正在将ID数组从get查询传递到knex whereIn函数,但它们会丢失。

if(query.cols){
  var cols = query.cols.map(Number);
  console.log(cols)
  search.whereIn('collection_id', cols)
}

我将它们映射到Integers进行查询。控制台日志是...
[ 77, 66 ]

但是调试将查询显示为...
...and "collection_id" in (?, ?)

我错过了什么?

最佳答案

这些值显示为字符串,因为knex要求将数组作为参数传递到包含数组中。从raw bindings的文档中:



您可以通过在数组本身内传递cols数组来解决此问题:

if (query.cols) {
  var cols = query.cols.map(Number);
  console.log(cols)
  search.whereIn('collection_id', [cols])
}

关于javascript - 数组未传递给knex中的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39598051/

10-12 06:58