Sequelize 在 where 子句中不接受有效的 moment.js 对象

Geo*_*rds 3 javascript postgresql node.js sequelize.js

我有以下续集查询:

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'));
    }
})
Run Code Online (Sandbox Code Playgroud)

现在,createdAtwhere 对象上的属性导致了我这个问题:

错误:错误:Object.escape 处的无效值 1506211200000 (C:\Users\George\Source\Repos\myProj\node_modules\sequelize\lib\sql-string.js:50:11) 在 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

ale*_*mac 5

您需要使用方法将moment对象转换为Date对象moment#toDate,以便在后续查询中使用它:

...
createdAt: {
  $lt: arr[index + 1].toDate(),
  $gt: period.toDate()
},
Run Code Online (Sandbox Code Playgroud)