Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

144
Visualizações
Codeblock funciona, el retorno no

Ni siquiera estoy seguro de cómo expresar esto exactamente.

Tengo las dos funciones que puedes ver a continuación. checkDescription funciona y regresa como se esperaba y luego rechaza la promesa. El segundo bloque "checkAwsVsSgs" también se ejecuta como se esperaba, pero nunca rechaza la promesa o incluso ejecuta la sección de prueba console.log.

 // Library Module, Public functions module.exports = { checkSG: function(block) { return new Promise((resolve, reject) => { let found = false; Object.keys(awsSecurityGroups).forEach( (key)=> { let group = awsSecurityGroups[key]; if (block.local_action.name === group.GroupName) { found = true; if (!checkDescription(group, block)) { reject("Description doesn't match.") } if (!checkAwsVsSgs(group, block)) { console.log("!!!!! I'm never called"); reject("Found rules in aws that are not in sgs") } } }); resolve(found); }); }, }; // Private functions function checkDescription(group, block) { return group.Description === block.local_action.description } function checkAwsVsSgs(group, block) { // Look for rules that are in AWS but not sgs group.IpPermissions.forEach( (awsRule) => { let foundRuleMatch = false; block.local_action.rules.forEach ( (blockRule) => { //console.log("Checking FromPort %s vs %s and ToPort %s vs %s for %s", awsRule.FromPort, blockRule.from_port, awsRule.ToPort, blockRule.to_port, group.GroupName) if (awsRule.ToPort === blockRule.to_port && awsRule.FromPort === blockRule.from_port) { foundRuleMatch = true } }); if (!foundRuleMatch) { console.log("Error: Could not find matching rule for %s FromPort: %s ToPort: %s", group.GroupName, awsRule.FromPort, awsRule.ToPort); return false; } }); return true; }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es porque siempre devuelve true en checkAwsVsSgs . El return false; que tiene dentro de forEach es para la función forEach , no para la función exterior. Necesitas hacer algo como esto:

 function checkAwsVsSgs(group, block) { // Look for rules that are in AWS but not sgs var found = true; group.IpPermissions.forEach( (awsRule) => { let foundRuleMatch = false; block.local_action.rules.forEach ( (blockRule) => { //console.log("Checking FromPort %s vs %s and ToPort %s vs %s for %s", awsRule.FromPort, blockRule.from_port, awsRule.ToPort, blockRule.to_port, group.GroupName) if (awsRule.ToPort === blockRule.to_port && awsRule.FromPort === blockRule.from_port) { foundRuleMatch = true } }); if (!foundRuleMatch) { console.log("Error: Could not find matching rule for %s FromPort: %s ToPort: %s", group.GroupName, awsRule.FromPort, awsRule.ToPort); found = false; return; } }); return found; }

Además, si desea probar si algún elemento de la matriz pasa cierta condición, considere usar Array.prototype.some() o Array.prototype.every() para todos los elementos.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda