簡體   English   中英

按列名順序排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM