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

166
Visualizações
Manejo del análisis del resultado de la consulta de DynamoDB

Supongamos que estoy trabajando en una aplicación que implementa el diseño de una sola tabla en DynamoDB. La tabla contiene organizaciones y usuarios, lo que da como resultado algo como esto:

ingrese la descripción de la imagen aquí

Con el SDK de AWS , puedo emitir un QueryCommand en mi tabla y recuperar toda la información y los registros relacionados con mi organización (el cuadro rojo en la imagen de arriba) ejecutando algo como esto:

 const params = { TableName: 'dynamo-table-name', KeyConditionExpression: '#PK = :PK', ExpressionAttributeNames: { '#PK': 'PK', }, ExpressionAttributeValues: { ':PK': 'ORG#MICROSOFT', }, }; const result = await client.send(new QueryCommand(params));

Dado que estoy usando @aws-sdk/lib-dynamodb el resultado vuelve como una matriz de objetos JS, lo cual es bueno, pero me encuentro con el siguiente problema. Una vez que tenga esos datos, me gustaría hacer lo siguiente:

Convierte esto:

 [ { "PK": "ORG#MICROSOFT", "SK": "METADATA#MICROSOFT", "OrgName": "Microsoft", "PlanType": "Enterprise", }, { "PK": "ORG#MICROSOFT", "SK": "USER#BILLGATES", "UserName": "Bill Gates", "UserType": "Member" }, { "PK": "ORG#MICROSOFT", "SK": "USER#SATYANADELLA", "UserName": "Satya Nadella", "UserType": "Admin" } ]

A algo como esto:

 { "result": [ { "OrgName": "Microsoft", "PlanType": "Enterprise", "Users": [ { "UserName": "Bill Gates", "UserType": "Member" }, { "UserName": "Satya Nadella", "UserType": "Admin" } ] } ] }

He luchado para encontrar una solución elegante. Mis intentos hasta este punto hicieron uso de la función de reducción de JavaScript, pero nunca terminaron sintiéndose lo suficientemente robustos como para ser algo que realmente consideraría usar. La mayoría de mis problemas provienen del hecho de que me gustaría que también funcionara si tuviera no solo usuarios para una organización, sino también algo más, como tal vez ubicaciones. También estoy buscando algo que, en el caso de que busque todas las organizaciones, pueda obtenerlas en el formato deseado. ¿Alguien tiene alguna sugerencia sobre cómo podría hacer esto?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Aquí hay una idea de cómo resolver esto. No estoy seguro si mejora sustancialmente sobre lo que ya has probado. Incruste la matriz de result resultante según sea necesario, por ejemplo, {result} .

Este código usa filtros repetidos sobre los mismos datos, por lo que, si bien es fácil de entender y modificar, no es óptimo para un gran conjunto de datos.

 const records = [ { PK: "ORG#MICROSOFT", SK: "METADATA#MICROSOFT", OrgName: "Microsoft", PlanType: "Enterprise", }, { PK: "ORG#MICROSOFT", SK: "USER#BILLGATES", UserName: "Bill Gates", UserType: "Member", }, { PK: "ORG#MICROSOFT", SK: "USER#SATYANADELLA", UserName: "Satya Nadella", UserType: "Admin", }, { PK: "ORG#APPLE", SK: "METADATA#APPLE", OrgName: "Apple", PlanType: "Enterprise", }, { PK: "ORG#APPLE", SK: "USER#TIMCOOK", UserName: "Tim Cook", UserType: "Admin", }, ]; const orgs = records.filter((rec) => rec.OrgName); const users = records.filter((rec) => rec.UserName); const result = orgs.map((org) => ({ OrgName: org.OrgName, PlanType: org.PlanType, Users: users .filter((user) => user.PK === org.PK) .map(({ UserName, UserType }) => ({ UserName, UserType })), })); console.log(result);

about 4 years ago · Juan Pablo Isaza 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