基于sequelize和mysql中表数据的条件查询结果限制

时间:2019-05-08 12:55:10

标签: mysql sequelize.js

在MySQL中使用sequelize.js。 假设我有一个包含这些列的表:

id: number (PK)
name: string
isRead: boolean
createdAt: Date

我正在寻找一种构建seqeulize选项对象的方法,以表示将完成以下任务的SQL查询:

如果有30多个未读行,请把所有这些行带给我,并按createdAt降序排列。 否则,只要带给我最新的30行,而与isRead无关(以createdAt降序排列)。

使用seqeulize甚至可能吗?很想获得正确方向的提示,因为我的搜索和序列化文档不会产生任何结果。

1 个答案:

答案 0 :(得分:0)

您可以这样做,

Project.count({ where: {'isRead': 0 }).then(c => {
    console.log("There are " + c + " projects!")
    if(c > 30) return Project.findAll({order: [['createdAt', 'DESC']]});
    else return Project.findAll({limit: 30, order: [['createdAt', 'DESC']]});
})