Sequelize关联排序配置及模型默认排序设置咨询
Sequelize关联排序与模型默认排序问题解答
1. 关联关系中设置排序
可以在关联关系中设置默认排序,你代码里的写法是正确的。当通过User.hasMany定义关联时,添加order选项后,每次调用user.getEmails()获取关联的邮箱数据时,都会自动按照createdAt倒序返回结果。
执行关联查询时,Sequelize生成的SQL会自动带上ORDER BY "Email"."createdAt" DESC语句,完全符合预期需求。如果需要临时调整排序规则,也可以在调用查询方法时单独指定order参数覆盖关联配置。
2. 为Model设置默认排序
可以通过**默认作用域(defaultScope)**为模型设置全局默认排序,在模型初始化的配置对象中添加defaultScope即可,示例如下:
User.init({ id: { allowNull: false, primaryKey: true, type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4 }, }, { sequelize, tableName: 'user', // 添加默认排序的默认作用域 defaultScope: { order: [['createdAt', 'DESC']] } });
这样每次查询User模型(比如User.findAll())时,都会自动应用这个排序规则。如果需要临时取消默认排序,可以使用User.unscoped().findAll(),或者自定义其他作用域来覆盖默认规则。
内容的提问来源于stack exchange,提问作者José Neves
相关产品推荐
相关产品推荐

