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

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) を管理した方がいいのでしょうけど、そこまでは必要ないかなと用途で書きました。

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