Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

237
Vistas
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 la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda