[英]Sequelize order by column name
我正在嘗試按Sequelize中的列名排序
這是我的模特
var Milestones = sequelize.define('milestones', {
milestoneId: Sequelize.INTEGER,
data: Sequelize.JSON,
repository: Sequelize.STRING
});
數據庫是PostegreSql 9.5
var dialect = 'postgres',
protocol = 'postgres';
var sequelize = new Sequelize(dbConfig.database, dbConfig.user, dbConfig.password, {
host: dbConfig.host,
dialect: dialect,
protocol: protocol,
dialectOptions: {
timeout: 30
},
pool: {
max: 5,
min: 0,
idle: 30000,
maxConnections: 5,
maxIdleTime: 30
},
logging: false
});
這是我的查詢
models.Milestones.findAll({
where: {
repository: req.body.repository
},
order: 'milestoneId'
}).then(function (values) {
// do something
});
這是我的錯誤
Unhandled rejection SequelizeDatabaseError: column "milestoneid" does not exist
所以問題是我想按milestoneId
排序,但Sequelize實際上是在嘗試按milestoneid
排序(請注意,缺少駱駝的情況)。
如果我按repository
更改順序,那么一切正常,因此此時的問題似乎與Sequelize轉換為小寫字母有關。
除了將數據庫中的列重命名為小寫以外,還有其他建議嗎?
謝謝
使用字段更新模型,就可以了
var Milestones = sequelize.define('milestones', {
milestoneId: {
type: Sequelize.INTEGER,
field: 'milestoneId'
},
data: Sequelize.JSON,
repository: Sequelize.STRING
});
編輯:
也更新訂購
order: ['milestoneId']
我在PostGreSQL和Oracle(使用Sequelize-Oracle)中遇到了類似的問題。 Sequelize自動為許多參數添加引號。
您是否已關閉“ quoteIdentifiers”選項? (默認啟用)。
也許問題不在於:
-按里程碑編號排序或按MilestoneId排序
但是它可以是:
-按“ milestoneid”排序(使用引號引起問題)。
醫生說:
[options.quoteIdentifiers = true]:布爾值,設置為false以使表名和屬性在Postgres上不區分大小寫,並跳過它們的雙引號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.