Skip to content
Snippets Groups Projects
Commit b3b5b1df authored by Vytor Calixto's avatar Vytor Calixto :space_invader:
Browse files

:bug: Fix bug in reqQueryFields when repeating values in query parameters

parent 2daa5fd3
No related branches found
No related tags found
1 merge request!116Release v1.0.0
Pipeline #
...@@ -174,35 +174,37 @@ class ReqQueryFields { ...@@ -174,35 +174,37 @@ class ReqQueryFields {
// "Constrói" o SQL // "Constrói" o SQL
return (req, res, next) => { return (req, res, next) => {
// Foreach no campos // Foreach no campos
Object.keys(this.fields).map((key, index) => { let hasJoined = {};
Object.keys(this.fields).forEach((key) => {
// Campo // Campo
let field = this.fields[key]; let field = this.fields[key];
log.debug(field); log.debug(field);
// `param` aqui é o atributo no objeto `req` (dims, filter, search, ...) // `param` aqui é o atributo no objeto `req` (dims, filter, search, ...)
let param = req[field.name]; let param = req[field.name];
log.debug('param'); // log.debug('param');
log.debug(param); // log.debug(param);
// Fazemos um foreach nos parametros dentro do atributo // Fazemos um foreach nos parametros dentro do atributo
Object.keys(param).map((k, i) => { Object.keys(param).forEach((k) => {
let values = _.merge(this.fieldValues, field.values); let values = _.merge(this.fieldValues, field.values);
log.debug('ValueS'); // log.debug('ValueS');
log.debug(values); // log.debug(values);
log.debug('k'); // log.debug('k');
log.debug(k); // log.debug(k);
if(typeof values[k] !== 'undefined') { if(typeof values[k] !== 'undefined') {
// Clonamos para não alterar o original // Clonamos para não alterar o original
let value = _.clone(values[k]); let value = _.clone(values[k]);
log.debug(value); // log.debug('value');
// log.debug(value);
// log.debug(hasJoined);
// Checa se não fizemos o join para este valor e se é necessário fazer // Checa se não fizemos o join para este valor e se é necessário fazer
if(!value.hasJoined && typeof value.join !== 'undefined') { if(!hasJoined[value.name] && typeof value.join !== 'undefined') {
let foreignTable = ''; let foreignTable = '';
if(value.join.foreignTable) foreignTable = value.join.foreignTable+'.'; if(value.join.foreignTable) foreignTable = value.join.foreignTable+'.';
// Fazemos o join // Fazemos o join
req.sql.join(value.table, null, foreignTable+value.join.foreign+'='+value.table+'.'+value.join.primary); req.sql.join(value.table, null, foreignTable+value.join.foreign+'='+value.table+'.'+value.join.primary);
// Marcamos o join como feito para não ter problemas // Marcamos o join como feito para não ter problemas
value.hasJoined = true; hasJoined[value.name] = true;
if(typeof this.fieldValues !== 'undefined' && typeof this.fieldValues[k] !== 'undefined') this.fieldValues[k].hasJoined = true; // values[k].hasJoined = true;
if(typeof field.values !== 'undefined' && typeof field.values[k] !== 'undefined') field.values[k].hasJoined = true;
} }
// Se o valor é um campo a ser incluído no SELECT // Se o valor é um campo a ser incluído no SELECT
if(typeof field.field !== 'undefined' && field.field) { if(typeof field.field !== 'undefined' && field.field) {
......
...@@ -47,7 +47,7 @@ describe('request enrollments', () => { ...@@ -47,7 +47,7 @@ describe('request enrollments', () => {
res.body.should.have.property('result'); res.body.should.have.property('result');
res.body.result.should.be.a('array'); res.body.result.should.be.a('array');
res.body.result[0].should.have.property('id'); res.body.result[0].should.have.property('id');
res.body.result[0].should.have.property('description'); res.body.result[0].should.have.property('name');
done(); done();
}); });
}); });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment