Propriedades dinâmicas ou funções agregadas em modelos de loopback
Como eu usaria funções agregadas nos modelos de Loopback? Se eu tiver um modelo apoiado por um banco de dados mysql, eu poderia ter o Model1 com uma relação hasMany para o Model2 (com uma determinada propriedade numérica) e ter uma propriedade no Model1 que agarra a soma desse campo do Model2?
{ "Model1" : { "Relations" : { "model2s" : { "type": "hasMany", "model": "Model2", "foreignKey": "model1Id" } }, "Properties" : { "total" : { "type": "Number" [SUM of Model2 'amount' field] } } }, "Model2" : { "Relations" : { "model1s" : { "type": "belongsTo", "model": "Model1", "foreignKey": "model1Id" } }, "Properties" : { "amount" : { "type": "Number" } } } }
Em uma questão separada, qual é a maneira correta de colocar uma condicional em um modelo, para que o valor retornado por um getter dependa de alguma expressão? Quero retornar um valor de uma relação, se existir, caso contrário, retorne o que existe no modelo principal.
Eu tentei isso (pseudocódigo):
module.exports = function(MyModel) { MyModel.on('attached', function() { var app = MyModel.app; MyModel.getter['total'] = function() { return (this.model1Id ? this.model1.total : this.total); }; }); };
No entanto, acabo recebendo umRangeError: Maximum call stack size exceeded
erro (semelhante ao observado emessa questão) Suponho que seja porque ele recursivamente chama o getter repetidamente, mas não tenho certeza do caminho para resolver o problema.
Desde já, obrigado...