我正在用nodejs开发rest api。我正在使用sequelize库 PostgreSQL数据库。
在nodejs中使用sequelize,我想获得一个临时列来管理一些值。我有两列vip_start
和vip_end
。这些列为DataTypes.DATEONLY
格式。
当我选择所有列时,我想比较两个日期,最后用答案创建一个新列。如果为true,则为1
,否则为0
。然后我想按VIP_ANSWER (1 or 0)
对选定的行进行排序。
在mysql中,它可以这样解决:
( SELECT IF (CURDATE( ) >= DATE( vip_start ) AND CURDATE( ) <= DATE( vip_end ), 1, 0 ) ) as vip
我该如何使它续集? :
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));
任何帮助将不胜感激。
答案 0 :(得分:0)
只需添加
[ 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'] ]