2015-05-20 64 views
1

中使用OR时出现错误我试图根据文档here使用或运算符在续集中执行查询。当在条款

m.client_state.find({ 
    where: { 
     validUntil: { 
      $or: { 
       lt: Date.now(), 
       eq: null 
      } 
     } 
    } 

根据文档,这看起来是正确的。我也尝试过$和操作符,并且没有使用$符号,但是我总是得到这个异常。

TypeError: undefined is not a function 
at Object.module.exports.QueryGenerator.whereItemQuery (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1753:45) 
at /home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1609:27 
at /home/grimurd/Documents/Repos/WiFi/node_modules/lodash/index.js:3159:15 
at baseForOwn (/home/grimurd/Documents/Repos/WiFi/node_modules/lodash/index.js:2089:14) 
at Function.<anonymous> (/home/grimurd/Documents/Repos/WiFi/node_modules/lodash/index.js:3438:16) 
at Object.module.exports.QueryGenerator.whereItemsQuery (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1608:11) 
at Object.module.exports.QueryGenerator.getWhereConditions (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1980:21) 
at Object.module.exports.QueryGenerator.selectQuery (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1287:30) 
at module.exports.QueryInterface.select (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/lib/query-interface.js:685:27) 
at null.<anonymous> (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/lib/model.js:743:34) 
at tryCatcher (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/node_modules/bluebird/js/main/util.js:24:31) 
at Promise._settlePromiseFromHandler (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:454:31) 
at Promise._settlePromiseAt (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:530:18) 
at Async._drainQueue (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/node_modules/bluebird/js/main/async.js:182:12) 
at Async._drainQueues (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/node_modules/bluebird/js/main/async.js:187:10) 
at Immediate.Async.drainQueues [as _onImmediate] (/home/grimurd/Documents/Repos/WiFi/node_modules/sequelize/node_modules/bluebird/js/mai 

该代码工作正常,如果我跳过$或只使用lt或eq。

+1

似乎$或预计其参数始终是一个数组 - 即使文档使用的对象。你能否在sequelize repo上打开一个bug? –

+0

是的你是对的,这工作后,我把对象内的数组。我将在他们的回购中创建一个问题。 – grimurd

回答

0

你错过了$

$lt: Date.now(), 
$eq: null 
+0

即使我添加$,仍然会得到相同的错误。 – grimurd