如何在Node.js中将'select if'函数与sequ​​elize一起使用

时间:2018-07-26 06:05:25

标签: node.js postgresql sequelize.js

我正在用nodejs开发rest api。我正在使用sequelize库 PostgreSQL数据库。

在nodejs中使用sequelize,我想获得一个临时列来管理一些值。我有两列vip_startvip_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));

任何帮助将不胜感激。

1 个答案:

答案 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'] ]