[Node.js] Mongoose で簡易的な auto increment を実装する

Wed, November 20, 2013 - 1 min read

Node.js + Mongoose で auto increment の実装をご紹介します。

mongoose | マングース

/**
 * 新規登録時に使う code を取得する
 *
 * @param {Function} callback(error, code)
 **/
var getNewCode = function (callback){
  var new_code = 1;

  Books.findOne({}, {}, {
    sort: {
      code: -1
    }
  }, function(error, doc){
    if (error) {
      console.error(error.stack || error);
      return callback(error);
    }

    if (!doc || !doc.code) {
      return callback(null, new_code);
    }

    new_code = doc.code + 1;

    return callback(null, new_code);
  });
};

本当は参考記事のように別途、モデルでシーケンシャルな code (id) を管理した方がいいのでしょうけど、そこまでは必要ないかなと用途で書きました。

連番を管理するためのモデルを作るとデータも線形的に増えるし、メンテも面倒になりますしね。