JavaScript
Node.js
MongoDB
AsyncAwait

Node.jsでMongoDBの公式ドライバーでAsync/Awaitを使う例です。

const mongodb = require('mongodb')

const transaction = async () => {

  //DB接続
  const client = await mongodb.MongoClient.connect('mongodb://127.0.0.1:27017', { useNewUrlParser: true })
  const db = await client.db('DATABASE_NAME')

  //保存
  await db.collection('COLLECTION_NAME').save({ message: 'message1' })
  await db.collection('COLLECTION_NAME').save({ message: 'message2' })

  //検索(`toArray()`版)
  const docs = await db.collection('COLLECTION_NAME').find({}).toArray()
  console.log(docs)

  //検索(カーソル版) 
  const cursor = db.collection('COLLECTION_NAME').find({})
  while(await cursor.hasNext()) {
    const doc = await cursor.next();
    console.log(doc);
  }


  //DB切断
  await client.close()

  return data.map(x => { //何かする })
}

transaction().then(x => console.log(x))

まとめ

  • 基本的に普通にasync/awaitを使うだけ
  • Async/Awaitのおかげでシリアルに書けるようになった
  • 同期APIと非同期APIが混在しているので、何にawaitをつけるか確認することが大切
    • find()find().toArray()の違いなど