gpt4 book ai didi

strongloop - 回送模型中的动态属性或聚合函数

转载 作者:行者123 更新时间:2023-12-04 04:59:20 32 4
gpt4 key购买 nike

我该如何在回送模型中使用聚合函数?如果我有一个由mysql数据库支持的模型,我是否可以将Model1与has2有hasMany关系(具有给定的数字属性),并在Model1中拥有一个属性,该属性可以从Model2中获取该字段的SUM?

{
“Model1”:{
“关系”:{
“model2s”:{
“type”:“hasMany”,
“model”:“Model2”,
“foreignKey”:“model1Id”
}
},
“特性” : {
“全部的” : {
“type”:“数字”
[Model2“金额”字段的总和]
}
}
},
“Model2”:{
“关系”:{
“model1s”:{
“type”:“属于”,
“model”:“Model1”,
“foreignKey”:“model1Id”
}
},
“特性” : {
“数量” : {
“type”:“数字”
}
}
}
}

另一方面,将条件放入模型的正确方法是什么,以使getter返回的值取决于某个表达式?我想从关系中返回一个值(如果存在),否则返回主模型上存在的值。

我已经试过了(伪代码):

module.exports = function(MyModel){
MyModel.on('attached',function(){
var app = MyModel.app;

MyModel.getter ['total'] = function(){
返回(this.model1Id?this.model1.total:this.total);
};
});

};

但是,我最终遇到了RangeError: Maximum call stack size exceeded错误(类似于this question中指出的错误)。我以为那是因为它反复递归调用getter,但是我不确定解决问题的方法。

提前致谢...

最佳答案

AFAIK环回目前不支持聚合函数/属性。请open a github issue将此作为功能请求进行跟踪。

请注意,访问相关模型的数据是异步操作,因此不可能可靠地实现属性(getter函数)以返回聚合结果。

这是一个样机,显示了如何正确地在计算的total上实现:

MyModel.prototype.getTotal = function(cb) {
if (!this.model1Id) {
// No related model, return the total from this model.
return cb(null, this.total);
}

// Fetch the related model and return its total
this.model1(function(err, model1) {
if (err)
cb(err);
else
cb(null, model1.total);
});
}

On a separate matter, what is the correct way to put a conditional in a model, so that the value returned by a getter depends on some expression? I end up getting a RangeError: Maximum call stack size exceeded error



正如我在您链接到的答案中所解释的那样, this.total调用您的自定义getter函数,该函数依次调用 this.total等。

解决方案是从内部数据对象读取值:
MyModel.getter['total'] = function() {
return this.__data.total;
};

关于strongloop - 回送模型中的动态属性或聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25438663/

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