【发布时间】:2018-06-23 11:24:41
【问题描述】:
我遇到了一个异常,在任何地方都找不到解决方案。貌似是sequelizeJs的bug。
问题来了:
我有两个模型
module.exports = db.sequelize.define('user', {
// id is added automatically
createdAt: {
type: Sequelize.DATE,
field: 'created_at'
}
})
module.exports = db.sequelize.define('question', {
// id is added automatically
userId: {
type: Sequelize.BIGINT,
field: 'user_id'
}
})
User.hasMany(Question,{foreignKey:'userId',as:'questions'})
然后我有一个问题:
models.User.findAll({
limit:limit,
order:[['createdAt','DESC']],
include : [{
{
model:models.Question,
as:"questions"
},]
})
我收到一个异常提示:“SequelizeDatabaseError: Unknown column 'user.created_at' in 'order Clause'”
这里是生成的sql代码:
SELECT ***** FROM (SELECT user.id, user.created_at AS createdAt FROM user AS user ORDER BY user.@987654331 @ DESC LIMIT 10) AS user LEFT OUTER JOIN question AS questions ON user.id = questions.user_id ORDER BY user.@98 @ DESC
似乎 order by 应用了两次。第二次,“created_at”已重命名为“createdAt”。这就是 db 抱怨“找不到 user.created_at”的原因。
我的问题是如何解决这个问题,以便我可以运行我的查询。我找不到任何可用的解决方案。为什么 Sequelize 两次应用“order by”?看起来没有必要。
【问题讨论】:
标签: orm sequelize.js