const mongoose = require('mongoose'); const Schema = mongoose.Schema; const CounterSchema = Schema({ '_id': { 'type': String, 'required': true }, 'seq': { 'type': Number, 'default': 1000 } }); const counter = mongoose.model('counter', CounterSchema); // create a schema for our links const urlSchema = new Schema({ '_id': { 'type': Number, 'index': true }, 'long_url': String, 'created_at': Date, 'visits': { 'type': Number, 'default': 0 } }); urlSchema.pre('save', function(next) { const doc = this; counter.findByIdAndUpdate({ '_id': 'url_count' }, { '$inc': { 'seq': 1 } }, function(error, counter) { if (error) return next(error); doc.created_at = new Date(); doc._id = counter.seq; next(); }); }); const Url = mongoose.model('Url', urlSchema); module.exports = Url;