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:
MyRecursiveFunctionMyRecursiveFunction obtiene documentos secundarios para el documento principalMyRecursiveFunction 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:
MyRecursiveFunction a la función principal que llama?