如何同时使用'<>'和一个¬ notNotIn'使用knex和Bookshelf查询时?

时间:2017-01-30 12:38:51

标签: javascript node.js knex.js bookshelf.js

我有一个模型,'摘录',并希望获取不属于给定用户的所有摘录,并且不在排除摘录的列表中(例如,没有带有id&的摘录) #39;来自列表[0,1,2,3])

我已成功选择了非用户拥有的所有摘录,方法是:

Excerpt
    .query({
        whereNot: { owner_id : req.currentUser.id }
    })
    .fetchAll()
    .then((excerptResults) => {
      res.status(200).json(excerptResults);
    });

并且我尝试使用whereNotIn排除使用以下代码段的摘录(根据this stackoverflow post

Excerpt
    .query({
      whereNotIn: { id : [0, 1, 2, 3] }
    })
    .fetchAll()
    .then((excerptResults) => {
      var tasks = [];
      for(var i=0; i<excerptResults.models.length; i++) {
        tasks.push(excerptResults.models[i].attributes);
      }
      res.status(200).json(tasks);
    });

不幸的是,我收到以下错误消息

Unhandled rejection Error: Undefined binding(s) detected when compiling SELECT query: select "excerpts".* from "excerpts" where "[object Object]" not in (?)

我真的不明白错误信息。有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

应该适用于您的情况:

Excerpt.query(function(qb){
   qb.where('id','not in', [0,1,2,3]).andWhere('owner_id','=',req.currentUser.id )
})
.fetchAll()
.then(...);