如何使用Sequelize查询虚拟列?

时间:2017-05-22 00:30:38

标签: mysql node.js database sequelize.js

学生表中有一个Sage,我想使用2017-Sage查询学生的出生年份,但我不知道该怎么做,我试图这样做:

db.Student.findAll({
        attributes: ['Sname','Ssex',[2017-Sequelize.col('Sage'),'Year of birth']],
        where: {
            Clno: {
                $in: ['01311','10665']
            }
        }
    })

但它出现了错误:

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: attr[0].indexOf is not a function

1 个答案:

答案 0 :(得分:1)

您可能需要检查Sequelize.VIRTUAL数据类型。

因此学生模型定义中可能需要这样的东西:

Student = sequelize.define('student', {
    ...
    birthYear: {
        type: Sequelize.VIRTUAL(Sequelize.INTEGER, "(2017 - `students`.age) as birthYear")
    }
}

此处提供了更多示例:https://github.com/sequelize/sequelize/issues/7350