node.js+express.jsサーバーのmongooseで、async/awaitを使えるようにする!簡単確実!

はてなブックマーク - node.js+express.jsサーバーのmongooseで、async/awaitを使えるようにする!簡単確実!
LINEで送る
Pocket

時代はもうJavaScriptの時代です!笑。

Node.jsでサーバーサイドを実装するプロダクションも増えていると実感しています。

その中、定番の組み合わせでよく登場する Node.js+Express.js+Mongoose+MongoDBがありますよね!

MongooseとMongoDBの組み合わせが大変便利で

開発の効率向上に貢献しています!

しかし、よくある「Callback地獄」がやはり、ありました!

例えば、データを全件一覧を取得するAPIエンドポイントがあるとします。

indexという関数を呼び出すと、mongoDBからその一覧を出します。(もちろんいくつか条件で絞ってもいいです。)

Before

これでも、別に、問題なく、データを取得して、処理することができますが

しかし、複数の「テーブル」collectionからデータを所得して

そのデータを比較したり、いろんな演算処理をしていくと

だんだんインデントが増えて、Callbackが増えて、コードの可読性が著しく低下してしまいます。

他人はともかく、三日間後、自分でさら、読めなくなることになるでしょう!笑。

なので、そこで、asyncとawaitがあるじゃないか!

今回は

簡単確実に!

node.js+express.jsサーバーのmongooseで、async/awaitを使えるようにする方法をご紹介します!

早速、適用した後のコードをご覧ください!

After

indexの部分がとてもシンプルになったことがお分かりになったでしょうか。

こうすることで、複数の「テーブル」を見ても、Callbackではなく、順次に処理していくイメージでコードをかけます!

例えば、こんな感じで

複数のデータを取ってくるのも、普通に書けますね!

重要!

node.jsのバージョン

Node.js V7.6からasync/awaitが正式に使えるようになりました。

exec()

ここで、必ず、exec()を使ってください。

promiseを返すのがexec()なので、これを使わないと、うまくいきません。

(こちらも合わせて、ご参考ください! http://mongoosejs.com/docs/promises.html)

エラー処理

また、必ず、try, catchのブロックに入れてください。

そうすると、エラーもちゃんとキャッチできるようになります!

では、御機嫌よう! Happy Coding!

最後に

意見交換や、絡みなどぜひ Twitterでお願いします!DMください!

 

はてなブックマーク - node.js+express.jsサーバーのmongooseで、async/awaitを使えるようにする!簡単確実!
LINEで送る
Pocket

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close