MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Struttura di un'applicazione sincrona in Node.js e MongoDb

Se stai eseguendo la versione del nodo 7.6 o successiva, il modo migliore sarà utilizzare async await che funziona con le promesse.

Quindi il tuo codice sarà simile a

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

Sicuramente qualsiasi funzione che aspetterai dovrebbe essere promessa come hai fatto con la tua funzione di connessione (ma se stai usando https://www.npmjs.com/package/mongodb funzioni già promesse)

Aggiorna

Il modo migliore sarà utilizzare mangusta , ma se vuoi lavorare con mongodb nativo puoi scrivere il tuo mongodb in questo modo https://pastebin.com/BHHc0uVN (solo un esempio)

Puoi espandere questo esempio come vuoi.

È possibile creare la funzione createCollection

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

E l'utilizzo sarà:

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

O se sei sicuro che init sia fatto (puoi farlo una volta prima dello script principale come avviare il server o qualunque cosa tu stia facendo)

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

Oppure, se vuoi lavorare in modo semplice con la raccolta come nel passaggio 6, aggiungi la tua raccolta cas (come l'utente nel file di esempio). Ma questo puoi usarlo anche quando la tua funzione init è terminata. Quindi l'utilizzo sarà

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