MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Estrutura de um aplicativo síncrono em Node.js e MongoDb


Se você estiver executando o node versão 7.6 ou superior, a melhor maneira será usar o async await que funciona com promessas.

Então seu código ficará assim
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

Claro que qualquer função que você vai esperar deve ser prometida como você fez com sua função de conexão (mas se você estiver usando https://www.npmjs.com/package/mongodb funções já prometidas)

Atualizar

A melhor maneira será usar mangusto , mas se você quiser trabalhar com mongodb nativo, você pode escrever seu mongodb assim https://pastebin.com/BHHc0uVN (apenas um exemplo)

Você pode expandir este exemplo como desejar.

Você pode criar a função createCollection
const createCollection = (connection, collectionName) => {
  return connection.createCollection(collectionName); // actually i'm not sure that this function exists in mongodb driver
}

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

Ou se você tiver certeza de que o init está pronto (você pode fazer isso uma vez antes do script principal, como iniciar o servidor ou o que estiver fazendo)
const mongodbLib = require('./lib/mongodb'); //path to db.js file
const connection = mongodbLib.getConnection();

Ou se você quiser trabalhar simples com a coleção como na etapa 6, adicione sua coleção cas (como usuário no arquivo de exemplo). Mas isso você também pode usar quando sua função init estiver concluída.
const mongodbLib = require('./lib/mongodb');
const cas = mongodbLib.collections.cas;
cas().insertMany(docs)
  .then()
  .catch()