按列名排序
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
排序
但它可以是:
- 按 'milestoneid' 排序(引号导致问题)。
文档说:
[options.quoteIdentifiers=true] : Boolean, Set to false to make table names and attributes case-insensitive on Postgres and skip double quoting of them.
我试图在 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
排序
但它可以是:
- 按 'milestoneid' 排序(引号导致问题)。
文档说:
[options.quoteIdentifiers=true] : Boolean, Set to false to make table names and attributes case-insensitive on Postgres and skip double quoting of them.