2017-09-24 50 views
1

我有以下sequelize查詢:Sequelize不接受有效moment.js對象中的WHERE子句

let prms = periods.map((period, index, arr) => { 
    if (arr[index + 1]) { 
     return sequelize.models.Result.aggregate('value', 'avg', { 
      where: { 
       createdAt: { 
        $lt: arr[index + 1], 
        $gt: period 
       }, 
       type: hook.params.headers.type, 
       entityId: hook.params.headers.entity 
      } 
     }).catch(err => console.log('err')); 
    } 
}) 

現在,在該createdAt財產,其中的對象是導致我這個問題:

error: Error: Invalid value 1506211200000 at Object.escape (C:\Users\George\Source\Repos\myProj\node_modules\sequelize\lib\sql-string.js:50:11) at Object.escape (C:\Users\George\Source\Repos\myProj\node_modules\sequelize\lib\dialects\abstract\query-generator.js:917:22)

現在我不知道1506211200000號碼是從哪裏來的,arr[index + 1]period都是moment.js對象,我可以通過console.log(arr[index + 1].isValid(), period.isValid());來驗證,它打印true true。如果刪除createdAt限制,則沒有問題。

任何想法這裏發生了什麼?

注:我使用的是Postgres

回答

2

你需要轉換moment對象Date使用對象moment#toDate方法,sequelize查詢中使用它:

... 
createdAt: { 
    $lt: arr[index + 1].toDate(), 
    $gt: period.toDate() 
},