(Qiitaのアカウント作成しなおしたので再掲)
mongooseでカウンターを書いてみた。
getNextSequence('カウンター名', callback (err, counter) {...});
こんな感じで使います。
getNextSequence.js
'use strict';
var mongoose = require('mongoose');
var counterSchema = new mongoose.Schema({
_id: String,
seq: Number
});
mongoose.model('Counter', counterSchema);
var counter = mongoose.model('Counter');
function getNextSequence(counterName, callback) {
counter.findOneAndUpdate(
{ _id: counterName },
{ $inc: { seq: 1 } },
{ new: true, upsert: true },
function (err, data) {
if (!err)
callback(null, data.seq);
else
callback(err, -1);
});
}
mongoose.connect('mongodb://localhost/test');
getNextSequence('counter1', function (err, counter) {
err || console.log(counter);
mongoose.disconnect();
});