node.js - Sequelize 在虚拟列中查询,如 Laravel 获取模型内的属性函数?
问题描述
我想从用户模型计算排名,其中排名只是数字。示例排名:
- 铜牌:50分
- 银 : 100 点
- 金币:200点
当用户等级为 150 点时,它应该是白银等级。我可以从虚拟列计算排名以通过查询排名表来获取排名名称吗?
"use strict";
module.exports = (sequelize, DataTypes) => {
const Rank = sequelize.define("Rank", {
name: DataTypes.STRING,
tier_total: DataTypes.INTEGER
});
const UserGameID = sequelize.define(
"UserGameID",
{
user_id: DataTypes.INTEGER,
total_win: {
type: DataTypes.INTEGER,
defaultValue: 0
},
total_lose: {
type: DataTypes.INTEGER,
defaultValue: 0
},
total_match: {
type: DataTypes.INTEGER,
defaultValue: 0
},
total_point: {
type: DataTypes.INTEGER,
defaultValue: 0
},
rank: {
type: DataTypes.VIRTUAL,
get: async function() {
var rank = await Rank.findOne({
where: {
tier_total: { $lte: this.total_point }
},
order: [["tier_total", "desc"]]
});
return rank;
}
},
status: DataTypes.BOOLEAN //false: unapproved, true: approved
}, { }
);
预期结果:
user_id: 1
total_win: 2
total_lose: 1
total_match: 3
total_point: 150
rank: silver
但排名总是返回 {}
解决方案
推荐阅读
- selenium - 无法单击硒自动化日历上的日期
- sql - 如何在 AWK 中拆分拆分字段?
- javascript - Selenium 无法在 Select Dropdown 上触发 onchange
- php - Deployer PHP - 自定义命令任务总是失败
- python - 多面图的多行工具提示导致错误
- java - java.lang.RuntimeException:必须在配置中设置“领域”
- kubernetes - 如何在 Kubernetes 中使用秘密
- css - 我的背景图像在一侧被截断,如何正确显示完整图像?
- python - VS Code 与 Pylint 存在问题
- scala - 一种遍历分页响应 Http4s 的简单方法