
let SakuyaDb = class {
  constructor (db) {
    this.db = db
    this.isOpen = false
    this.db.open( (err) => {
      if (err) {
        console.error(err)
        return
      }

      this.isOpen = true
      console.log('MongoDB Open.')
    })
  }

  /**
   * ユーザのドキュメントを作成します。
   * @param {UserObject} user TwitterのUser Object
   * @return insertの結果
   */
  createUser (user) {
    let collection = this.db.collection('users')
    return collection.insertOne({
      '_id': user.id_str,
      'name': user.name,
      'nickname': ':NAME:さん',
      'lovelity': 5
    })
  }

  /**
   * ユーザのドキュメントを更新します。
   * @param {string} id Twitter の User ID (id_str)
   * @param {object} data 更新するデータのクエリ
   * @return updateの結果
   */
  _updateUser (id, data) {
    let collection = this.db.collection('users')
    return collection.findOneAndUpdate({
      '_id': id
    }, data)
  }

  /**
   * 指定したIDのユーザにニックネームを設定します。
   * @param {string} id Twitter の User ID (id_str)
   * @param {string} nickname ニックネーム
   * @return updateの結果
   */
  setNickname (id, nickname) {
    return this._updateUser(id,
      {$set:{ 'nickname': nickname}}
    )
  }

  /**
   * 指定したIDのユーザの好感度を増減します。
   * @param {string} id Twitter の User ID (id_str)
   * @param {number} incremental 増減量
   * @return updateの結果
   */
  incraseLovelity (id, incremental) {
    return this._updateUser(id, 
      {$inc:{ 'lovelity': incremental}}
    )
  }
}

module.exports = SakuyaDb

@@ -566,32 +566,227 @@
 : 5%0A    %7D)%0A  %7D%0A%0A
+  /** %0A   * %E3%83%A6%E3%83%BC%E3%82%B6%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A   * @param %7Bstring%7D user id%0A   * @return %E3%83%A6%E3%83%BC%E3%82%B6%E3%83%87%E3%83%BC%E3%82%BF%0A   */%0A  getUser (id) %7B%0A    let collection = this.db.collection('user')%0A    return collection.findOne(%7B '_id': id%7D)%0A  %7D%0A%0A
   /**%0A   * %E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AE%E3%83%89

Add mongodb.find method wrapper