我是SequelizeJS的新手,并将其用于带有NodeJS应用程序的PostgreSQL。
我有一张桌子:
sequelize.define('log', {
id: {
type: type.INTEGER,
primaryKey: true,
autoIncrement: true
},
statusCode: type.INTEGER,
status: type.STRING,
message: type.TEXT,
lastRecordId: type.STRING,
lastRecordTime: type.DATE
});
问题是,当我运行查询以lastRecordId
顺序从DESC
列中获取值时,我得到了错误的值顺序:
我不想在该列上使用INTEGER
或BIGINT
,因为它包含的代码不是实数。
我正在使用的查询是:
LoggerModel
.findAll({
order: [ [ 'lastRecordId', 'DESC' ]],
})
.then( allLogs => {
//...
})
答案 0 :(得分:1)
您可以即时投放它,而无需更改列的类型。然后,您可以订购。
LoggerModel
.findAll({
order: [
sequelize.cast('lastRecordId', 'BIGINT'),
[ 'lastRecordId', 'DESC' ]
],
})
.then( allLogs => {
//...
})
答案 1 :(得分:0)
我已经使用@bereket的答案和答案here找到了解决方案。 对我有用的是:
LoggModel
.findAll({
order: [
[ sequelize.cast(sequelize.col('lastRecordId'), 'BIGINT') , 'DESC' ]
]
})
.then((logs) => { /// })