From b3b5b1df385ef0b4d0c19832bedb5ab68905941a Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Tue, 7 Mar 2017 10:26:32 -0300 Subject: [PATCH] :bug: Fix bug in reqQueryFields when repeating values in query parameters --- src/libs/middlewares/reqQueryFields.js | 28 ++++++++++++++------------ src/test/enrollment.js | 2 +- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/libs/middlewares/reqQueryFields.js b/src/libs/middlewares/reqQueryFields.js index c5fc1747..1fe597d3 100644 --- a/src/libs/middlewares/reqQueryFields.js +++ b/src/libs/middlewares/reqQueryFields.js @@ -174,35 +174,37 @@ class ReqQueryFields { // "Constrói" o SQL return (req, res, next) => { // Foreach no campos - Object.keys(this.fields).map((key, index) => { + let hasJoined = {}; + Object.keys(this.fields).forEach((key) => { // Campo let field = this.fields[key]; log.debug(field); // `param` aqui é o atributo no objeto `req` (dims, filter, search, ...) 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 - Object.keys(param).map((k, i) => { + Object.keys(param).forEach((k) => { let values = _.merge(this.fieldValues, field.values); - log.debug('ValueS'); - log.debug(values); - log.debug('k'); - log.debug(k); + // log.debug('ValueS'); + // log.debug(values); + // log.debug('k'); + // log.debug(k); if(typeof values[k] !== 'undefined') { // Clonamos para não alterar o original 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 - if(!value.hasJoined && typeof value.join !== 'undefined') { + if(!hasJoined[value.name] && typeof value.join !== 'undefined') { let foreignTable = ''; if(value.join.foreignTable) foreignTable = value.join.foreignTable+'.'; // Fazemos o join 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 - value.hasJoined = true; - if(typeof this.fieldValues !== 'undefined' && typeof this.fieldValues[k] !== 'undefined') this.fieldValues[k].hasJoined = true; - if(typeof field.values !== 'undefined' && typeof field.values[k] !== 'undefined') field.values[k].hasJoined = true; + hasJoined[value.name] = true; + // values[k].hasJoined = true; } // Se o valor é um campo a ser incluÃdo no SELECT if(typeof field.field !== 'undefined' && field.field) { diff --git a/src/test/enrollment.js b/src/test/enrollment.js index 6d4c35b2..b40c2de8 100644 --- a/src/test/enrollment.js +++ b/src/test/enrollment.js @@ -47,7 +47,7 @@ describe('request enrollments', () => { res.body.should.have.property('result'); res.body.result.should.be.a('array'); 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(); }); }); -- GitLab