sequelize 问题汇总
· 6月 17, 2020 ·

Sequelize

sequelizenodejs里面很成熟的数据库ORM,配合nodejs使用,开发事半功倍。相较于其他语言ORMsequelize 有着一整套完整的解决方案,包括各种复杂的查询,联表,数据库表的设计与生成等。

本文主要记录各种负责的数据查询使用sequelize如何实现,还有记录一些坑或bug。

sequelize include order

写过原生sql查询的人都知道,排序都是在最外层排序的,所以一下代码无效:

ctx.model.User.findAll({
    include: [
        {
            model: ctx.mode.Book,
            as: 'books',
            order: [['createdAt', 'ASC']]
        }
    ],
    order: [['createdAt', 'DESC']]
})

以上查询最外层的order是有效的, 但是里面include层的books数组排序是无效的,会导致每次查询的数据顺序不一样,要指定include里面数据的排序,应该这样写

ctx.model.User.findAll({
    include: [
        {
            model: ctx.mode.Book,
            as: 'books'
        }
    ],
    order: [['createdAt', 'DESC'], order: [['books', 'createdAt', 'ASC']]]
})

类似于原生查询的A.createdAt

周杰伦 - 说好不哭