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

476
Visualizações
¿Cómo inicializar bases de datos y contenedores de cosmosDB en funciones de Azure usando el nodo SDK?

En mi implementación actual, tengo un código de inicialización de la base de datos que se ejecuta en cada solicitud de función, lo cual es malo por motivos de rendimiento.

¿Cómo verificar si existe un contenedor en cosmos DB usando el nodo sdk?

Lo mejor es crear conexiones estáticas en la inicialización de la aplicación como se describe aquí: https://docs.microsoft.com/en-us/azure/azure-functions/manage-connections#static-clients

pero estoy teniendo un poco de problema con la inicialización. Así es como la documentación lo describe en javascript.

 const cosmos = require('@azure/cosmos'); const endpoint = process.env.COSMOS_API_URL; const key = process.env.COSMOS_API_KEY; const { CosmosClient } = cosmos; const client = new CosmosClient({ endpoint, key }); // All function invocations also reference the same database and container. const container = client.database("MyDatabaseName").container("MyContainerName"); module.exports = async function (context) { const { resources: itemArray } = await container.items.readAll().fetchAll(); context.log(itemArray); }

Los problemas/preguntas que tengo son cómo manejo los errores si la base de datos no existe o si el contenedor no existe.

¿Necesito separar completamente mi lógica "createIfNotExists" de la aplicación de funciones?

Si trato de ejecutar el código createIfNotExists en el inicio, no puedo hacer esperas de nivel superior y recibo errores de rechazo de promesas.

Me gustaría hacer algo como lo siguiente:

 try { const cosmos = require('@azure/cosmos'); const endpoint = process.env.COSMOS_API_URL; const key = process.env.COSMOS_API_KEY; const { CosmosClient } = cosmos; const client = new CosmosClient({ endpoint, key }); const db = await client.databases.createIfNotExists({id: "databaseId"}); const container1 = await db.container.createIfNotExists(containerDefinition1) const container2 = await db.container.createIfNotExists(containerDefinition2) } catch(err) { handleError(err) } ... module.exports = async function (context) { ... const {resources: items } = await container1.items.query(querySpec).fetchAll(); }

¿Cuál es la mejor manera de implementar esto? ¡Cualquier ayuda es apreciada!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Creo que necesitas manejar cada uno individualmente, por ejemplo

 async onApplicationLoad() { // Create DB if it doesn't exist try { await this.client.databases.createIfNotExists({ id: this.mDBId }); } catch (error) { Logger.log(`Error creating database: ${error}`, 'AzureCosmosDbService'); } // Create the containers if they don't exist try { await this.client.database(this.mDBId).containers.createIfNotExists({ id: this.mNoteContainerId }); await this.client.database(this.mDBId).containers.createIfNotExists({ id: this.mReportedNotesContainerId }); const iterator = this.client.database(this.mDBId).containers.readAll(); const { resources: containersList } = await iterator.fetchAll(); } catch (error) { Logger.log(`Error creating containers: ${error}`, 'AzureCosmosDbService'); } return; }
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