sql >> データベース >  >> NoSQL >> MongoDB

Node.jsとMongoDbの同期アプリケーションの構造

    ノードバージョン7.6以降を実行している場合は、promiseで機能するasyncawaitを使用することをお勧めします。

    したがって、コードは次のようになります

    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
    

    確かに、あなたが待つ予定の関数は、接続関数で行ったように約束する必要があります(ただし、を使用している場合は、 https://www.npmjs.com/package/mongodb すでに約束されている機能)

    更新

    最善の方法は、mongoose を使用することです。 、ただし、ネイティブのmongodbを使用する場合は、次のようにmongodbを記述できます。 https://pastebin.com/BHHc0uVN (ほんの一例)

    この例は必要に応じて拡張できます。

    関数createCollectionを作成できます

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

    使用法は次のようになります:

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

    または、初期化が完了していることが確実な場合(サーバーの起動など、メインスクリプトの前に一度実行できます)

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

    または、手順6のようにコレクションを簡単に操作する場合は、casコレクションを追加します(サンプルファイルのユーザーなど)。ただし、これはinit関数が実行されたときにも使用できます。したがって、使用法は次のようになります

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



    1. MongoDBのユーザー権限をどのように変更しますか?

    2. 複数のデータベースをサポートするPythonアプリケーションの書き方

    3. redisでHSET子キーを期限切れにする方法は?

    4. $exprarrayElementAtが埋め込みドキュメントの集計で機能しない