sql >> Base de Datos >  >> NoSQL >> MongoDB

Estructura de una aplicación síncrona en Node.js y MongoDb

Si está ejecutando la versión de nodo 7.6 o superior, la mejor manera será usar async await que funciona con promesas.

Entonces su código se verá como

const start = async() => {
  const connect = await connectToMongoDb(url);
  const cas = await connect.createYourCollection();
  const isPageHasUpdates = oneMoreFunction(); // i don't know how you gonna check it
  if(isPageHasUpdates) {
      await step 4;
      await step 5;
      await step 6;
  }
  await step 7
  return something; // if you want
}

start()
.then(res => console.log(res)) // here you can use result of your start function if you return something or skip this then
.catch(err => console.log(err)); // do something with your error

Seguro que cualquier función que vaya a esperar debe prometerse como lo hizo con su función de conexión (pero si está usando https://www.npmjs.com/package/mongodb funciones ya prometidas)

Actualizar

La mejor manera será usar mongoose , pero si quieres trabajar con mongodb nativo, puedes escribir tu mongodb así https://pastebin.com/BHHc0uVN (solo un ejemplo)

Puedes ampliar este ejemplo como quieras.

Puede crear la función createCollection

const createCollection = (connection, collectionName) => {
  return connection.createCollection(collectionName); // actually i'm not sure that this function exists in mongodb driver
}

Y el uso será:

const mongodbLib = require('./lib/mongodb'); //path to db.js file
mongodbLib.init()
  .then(connection => mongodbLib.createCollection(connection, 'cas'))
  .then(() => doSmthElse())

O si está seguro de que está listo (puede hacerlo una vez antes de la secuencia de comandos principal, como iniciar el servidor o lo que sea que esté haciendo)

const mongodbLib = require('./lib/mongodb'); //path to db.js file
const connection = mongodbLib.getConnection();

O si desea trabajar de forma sencilla con la colección como en el paso 6, agregue su colección cas (como el usuario en el archivo de ejemplo). Pero esto también se puede usar cuando se realiza la función de inicio. Por lo tanto, el uso será

const mongodbLib = require('./lib/mongodb');
const cas = mongodbLib.collections.cas;
cas().insertMany(docs)
  .then()
  .catch()