MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Struktura aplikacji synchronicznej w Node.js i MongoDb

Jeśli używasz węzła w wersji 7.6 lub nowszej, lepszym sposobem będzie użycie async await, który działa z obietnicami.

Twój kod będzie wyglądał tak

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

Na pewno każda funkcja, na którą będziesz czekać, powinna być obiecana, tak jak w przypadku funkcji connect (ale jeśli używasz https://www.npmjs.com/package/mongodb funkcje już obiecane)

Aktualizacja

Najlepszym sposobem będzie użycie mongoose , ale jeśli chcesz pracować z natywną mongodb, możesz napisać swoją mongodb w ten sposób https://pastebin.com/BHHc0uVN (tylko przykład)

Możesz rozszerzyć ten przykład, jak chcesz.

Możesz utworzyć funkcję createCollection

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

A użycie będzie:

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

Lub jeśli jesteś pewien, że init jest zakończony (możesz to zrobić raz przed głównym skryptem, takim jak uruchamianie serwera lub cokolwiek robisz)

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

Lub jeśli chcesz uprościć pracę z kolekcją, jak w kroku 6, dodaj swoją kolekcję cas (jak użytkownik w przykładowym pliku). Ale możesz tego użyć, gdy twoja funkcja init jest wykonywana. Więc użycie będzie

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy mongo może zwrócić dokumenty z pustymi/brakującymi polami na końcu w kolejności asc?

  2. Jak wyszukiwać dokumenty w mongodb (pymongo), w których wszystkie słowa kluczowe występują w polu?

  3. Dlaczego współrzędne wielokątów GeoJSON Objects są przechowywane w tablicy tablicy?

  4. Jak wyszukać rekord, a następnie go usunąć

  5. Symbol wieloznaczny mongodb pasuje do wszystkich wartości dla określonego klucza