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

482
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
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