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

ルート、コントローラー、モデルを使用したNodeJSプロジェクトのミドルウェアコードのリファクタリング

    組み合わせて使用​​すると、コードがはるかに優れたものになる2つのことがあります。

    • Collection.find Promiseを返します 。
    • Promiseが最新のJavascriptで解決されるのを待つには、awaitを使用します

    次のコードを使用できます:

    const Person= require('./models/person')
    const Mortician = require('./models/mortician')
    router.get('/', async (req, res, next) => {
      try {
        const persons = await Person.find({ pickedUp: false });
        const morticians = await Mortician.find({});
        res.render('pages/dashboard', {
          title: 'Dashboard',
          persons,
          morticians,
        });
      } catch(e) {
        // handle errors
      }
    });
    

    または、結果をシリアルではなくパラレルで取得するには、Promise.allを使用します :

    router.get('/', async (req, res, next) => {
      try {
        const [persons, morticians] = await Promise.all([
          Person.find({ pickedUp: false }),
          Mortician.find({})
        ]);
        res.render('pages/dashboard', {
          title: 'Dashboard',
          persons,
          morticians,
        });
      } catch(e) {
        // handle errors
      }
    });
    

    複数の非同期呼び出しを行う場合はいつでも同じ種類のパターンを使用できます。醜いブラケットのネストやインデントは必要ありません。




    1. Spring BootStandardUUIDコーデックがAbstractMongoClientConfigurationで機能しない

    2. 集計ステップで見つかったmax(value)を共有するすべてのドキュメントを検索します

    3. 配列から上位N個のエントリを検索する

    4. ブール値をmongodbに格納するにはどうすればよいですか?