gpt4 book ai didi

mysql - 如何根据其他列的计算在 mysql 中创建联合列

转载 作者:行者123 更新时间:2023-11-29 10:36:40 24 4
gpt4 key购买 nike

我正在尝试在我的用户模型中创建一个“总计列”。我不确定如何进行计算。以前我是在前端执行此操作,但这使我的排序选项非常有限,因此我想在后端执行此操作,然后附加总行。

这就是我的模型的样子:模块.导出= {

autosubscribe: ['destroy'],

attributes: {
name: {
type: 'string',
required: true
},
email: {
type: 'email',
unique: true,
required: true
},
password: {
type: 'string',
required: true,
minLength: 6
},
status: {
type: 'string',
defaultsTo: 'offline',
required: false
},
score: {
type: 'integer',
defaultsTo: 0,
required: false
},
totalwins: {
type: 'integer',
defaultsTo: 0,
required: false
},
totalgames: {
type: 'integer',
defaultsTo: 0,
required: false
},
ip: {
type: 'string',
required: false
}
}
};

我尝试添加类似的内容

scorepct: {
type: 'integer',
defaultsTo: totalwins/totalgames,
required: false
}

但这似乎不起作用,对于如何从我的用户模型中做到这一点有什么想法吗?

最佳答案

我认为做你想做的事情的唯一方法是添加 lifecycle callbacks到你的模型。您可以确保每次使用默认的 createupdate 方法时,该属性都会按照您的意愿更新:

attributes: {
// ...
scorepct: {
type: 'integer'
defaultsTo: 0 // always 0 at creation time
},
},

afterUpdate: function(attrs, next) {
var calculatedPct = attrs.totalgames === 0 ? 0 : attrs.totalwins / attrs.totalgames;
if (calculatedPct === attrs.scorepct) {
return next();
}
User.update(attrs.id, {scorepct: calculatedPct}).exec(function(err, user) {
// handle the error
return next();
});
},

这看起来很麻烦 - 为什么不只在需要的地方计算百分比而不将结果存储在数据库中?您可以安排在每个 .find 处自动执行此操作,或者在对数据进行 api 调用时执行此操作等。

关于mysql - 如何根据其他列的计算在 mysql 中创建联合列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46284422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com