将附加运算符的顺序转换为 sequelize
Convert order by additional operator to sequelize
我想将查询 MySQL 转换为 sequelize,但我不知道
SELECT * FROM `RewardEntries`
ORDER BY `RewardEntries`.`happinessPoint` + `RewardEntries`.`moneyPoint` + `RewardEntries`.`healthyPoint` DESC
请帮帮我
谢谢
可能有更优雅的方法来做到这一点。我已经用 PostgreSQL 对此进行了测试,尽管同样适用于 MySQL。
let rewards = await RewardEntry.findAll({
order: [
[ sequelize.literal('happinesspoint + moneypoint + healthypoint'), 'DESC' ]
]
})
这是一个完整的示例。数据库中 table 的名称及其所有列均为小写。这就是查询中只有小写字母的原因。
let {
Sequelize,
DataTypes,
} = require('sequelize')
async function run () {
let sequelize = new Sequelize('mydb', 'username', 'password', {
host: 'localhost',
port: 5432,
dialect: 'postgres',
logging: console.log
})
let RewardEntry = sequelize.define('RewardEntry', {
id: {
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true
},
HappinessPoint: {
type: DataTypes.INTEGER,
field: 'happinesspoint'
},
MoneyPoint: {
type: DataTypes.INTEGER,
field: 'moneypoint'
},
HealthyPoint: {
type: DataTypes.INTEGER,
field: 'healthypoint'
}
},
{
tableName: 'rewardentries',
timestamps: false
})
let rewards = await RewardEntry.findAll({
order: [
[ sequelize.literal('happinesspoint + moneypoint + healthypoint'), 'DESC' ]
]
})
console.log(JSON.stringify(rewards, null, 2))
await sequelize.close()
}
run()
我想将查询 MySQL 转换为 sequelize,但我不知道
SELECT * FROM `RewardEntries`
ORDER BY `RewardEntries`.`happinessPoint` + `RewardEntries`.`moneyPoint` + `RewardEntries`.`healthyPoint` DESC
请帮帮我
谢谢
可能有更优雅的方法来做到这一点。我已经用 PostgreSQL 对此进行了测试,尽管同样适用于 MySQL。
let rewards = await RewardEntry.findAll({
order: [
[ sequelize.literal('happinesspoint + moneypoint + healthypoint'), 'DESC' ]
]
})
这是一个完整的示例。数据库中 table 的名称及其所有列均为小写。这就是查询中只有小写字母的原因。
let {
Sequelize,
DataTypes,
} = require('sequelize')
async function run () {
let sequelize = new Sequelize('mydb', 'username', 'password', {
host: 'localhost',
port: 5432,
dialect: 'postgres',
logging: console.log
})
let RewardEntry = sequelize.define('RewardEntry', {
id: {
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true
},
HappinessPoint: {
type: DataTypes.INTEGER,
field: 'happinesspoint'
},
MoneyPoint: {
type: DataTypes.INTEGER,
field: 'moneypoint'
},
HealthyPoint: {
type: DataTypes.INTEGER,
field: 'healthypoint'
}
},
{
tableName: 'rewardentries',
timestamps: false
})
let rewards = await RewardEntry.findAll({
order: [
[ sequelize.literal('happinesspoint + moneypoint + healthypoint'), 'DESC' ]
]
})
console.log(JSON.stringify(rewards, null, 2))
await sequelize.close()
}
run()