我正在nodejs中开发一个rest api。我正在使用sequelize库 postgresql 数据库。
通过nodejs中的sequelize,我想获得一个临时列来管理一些值。我有两列 vip_start
和 vip_end
。这些列采用 DataTypes.DATEONLY
格式。
当我选择所有列时,我想比较两个日期,最后创建一个包含答案的新列。如果为 true,则 1
,否则 0
。然后我想按 VIP_ANSWER(1 或 0)
对选定的行进行排序。
在 mysql 中它是这样解决的:
( SELECT IF (CURDATE( ) >= DATE( vip_start ) AND CURDATE( ) <= DATE( vip_end ), 1, 0 ) ) as vip
如何在 Sequelize 中实现它? :
const datetime = new Date();
return Phones
.findAll({
attributes: ['id', 'description', 'vip_start', 'vip_end','user_id' ],//I want to there new column like vip_answer [1,0] and order by this values
where: {
enabled: 1,
vip_start: { $lte: datetime }, // in there i am stopped (((
},
})
.then(phone => res.status(200).send(phone));
任何帮助将不胜感激。
最佳答案
只需添加
[ sequelize.literal('( SELECT IF (CURDATE( ) >= DATE( vip_start ) AND CURDATE( ) <= DATE( vip_end ), 1, 0 ) )'),'vip']
到您的属性列表:
attributes: ['id', 'description', 'vip_start', 'vip_end','user_id' , [ sequelize.literal('( SELECT IF (CURDATE( ) >= DATE( vip_start ) AND CURDATE( ) <= DATE( vip_end ), 1, 0 ) )'),'vip'] ]
关于node.js - 如何在nodejs中将 'select if'函数与sequelize一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51532000/