sql >> Databasteknik >  >> NoSQL >> MongoDB

Struktur för en synkron applikation i Node.js och MongoDb

Om du kör nodversion 7.6 eller högre, är ett bättre sätt att använda async await som fungerar med löften.

Så din kod kommer att se ut som

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

Visst, alla funktioner du kommer att vänta på bör utlovas som du gjorde med din connect-funktion (men om du använder https://www.npmjs.com/package/mongodb redan utlovade funktioner)

Uppdatera

Det bästa sättet är att använda mongoose , men om du vill arbeta med native mongodb kan du skriva din mongodb så här https://pastebin.com/BHHc0uVN (bara ett exempel)

Du kan utöka detta exempel som du vill.

Du kan skapa funktionen createCollection

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

Och användningen kommer att vara:

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

Eller om du är säker på att init är gjort (du kan göra det en gång innan ditt huvudskript som att starta servern eller vad du än gör)

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

Eller om du vill enkelt arbeta med samling som i steg 6, lägg till din cas-samling (som användare i exempelfil). Men detta kan du också använda när din init-funktion är klar. Så användningen kommer att vara

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



  1. Operatör $arrayElemAt i aggregering med Mongo <3.2

  2. python flask hur man skickar en dynamisk parameter till en dekoratör

  3. Omöjligt att skapa användare (eller anpassade baserade roller) i Mongo på servern NodeJS

  4. Fylla på objekt i en array