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

226
Visualizações
Procedimiento almacenado recursivo de CosmosDB para devolver datos anidados sin respuesta.setBody()

Estoy en proceso de construir un procedimiento almacenado en CosmosDB. El propósito del procedimiento almacenado es obtener recursivamente todos los documentos secundarios que se relacionan con un documento principal en mi colección.

Los pasos son los siguientes:

  • Obtener documentos de los padres
  • Para cada documento principal, llame a MyRecursiveFunction
  • MyRecursiveFunction obtiene documentos secundarios para el documento principal
  • MyRecursiveFunction debe devolver los documentos secundarios al padre

.

 function GetGroups(Id) { var context = getContext(); var collection = context.getCollection(); var response = context.getResponse(); query = "MY QUERY" var accepted = collection.queryDocuments(collection.getSelfLink(), query, function (err, documents, responseOptions) { if (err) { throw new Error("Error" + err.message); } if (documents.length === 0) { throw "Unable to find document" } for (let i = 0; i < documents.length; i++) { MyRecursiveFunction(documents[i]) //<--- Assemble hierarchy } } ) if (!accepted) { throw "Some error happened" } function MyRecursiveFunction(document) { for (let i = 0; i < document.children.length; i++) { query = "MY QUERY TO GET DOCUMENT BY ID" var accepted = collection.queryDocuments(collection.getSelfLink(), query, function (err, child, responseOptions) { if (err) { throw new Error("Error" + err.message); } if (child.length === 0) { throw "Unable to find documents" } return child[0] //<------ How do I return this to parent caller? } ) if (!accepted) { throw "Some error happened" } } } }

El problema aquí es que me cuesta entender cómo puedo devolver los datos que se obtuvieron dentro MyRecursiveFunction . La única forma en que parece que puedo hacerlo es respondiendo.setBody(child[0]) - Pero obviamente esto envía una respuesta a mi API.

El uso de la propiedad de aceptación devuelta de collection.queryDocuments() solo devuelve true o false

Por lo tanto, mi pregunta se reduce a lo siguiente:

  • ¿Cómo devuelvo los datos de MyRecursiveFunction a la función principal que llama?
  • En caso de que quiera usar un token de continuación y logre devolver datos a mi función principal, ¿esta forma de estructurar mi procedimiento almacenado limitará mi posibilidad de usar un token de continuación, ya que son básicamente dos llamadas individuales?
about 4 years ago · Juan Pablo Isaza
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