1

taking help of followings:

1.https://stackoverflow.com/a/30164855/2168120

2.mongodb auto-increment

app.js:

//some codes
var mongoose = require('mongoose');
var connection = mongoose.createConnection("mongodb://localhost/dfp", function(err){
    if(err){
      console.log(err);
    }else{
      console.log("connected to mongodb from app");
    }
});

schemas:

var userSchema = mongoose.Schema({email: String, fname: String, lname: String, password: String, gender: String,
                                mobile: String, dob:{ type: Date, default: Date.now }, ip: String, doj:{ type: Date, default: Date.now }
                                },{ collection : 'user' }); 
var user = mongoose.model('user',userSchema);

var CounterSchema = mongoose.Schema({
  _id: {type: String, required: true},
  seq: { type: Number, default: 0 }
});

var counters = mongoose.model('counters', CounterSchema);

app.post():

app.post('/save', function(req, res, next){
  var data = req.body;
  var newuser = new user();
  var dob = new Date(data['dob']);
  var doj = new Date();
  for(var i in data){
    if(i != dob){
      newuser.i = data[i];
    }       
  }
  newuser.dob = dob;

  counters.findByIdAndUpdate({_id: 'userid'}, {$inc: { seq: 1} }, function(error, counter)   {
    if(error) {
        return next(error); //https://stackoverflow.com/a/30164855/2168120
    }
    newuser._id = counter.seq;
    next();
  });
  console.log(newuser.get('_id'));

  newuser.save(function (err) {
    if (err) {
      return handleError(err);
    }
    // saved!
  });
});

I'm unable to save this new record into user table.

Community
  • 1
  • 1
liza
  • 3,687
  • 3
  • 16
  • 18

1 Answers1

1

Thanks to this.

  1. Using mongoose-auto-increment I am able to create an auto-incremented _id.

solution:

var mongoose = require('mongoose');
var autoIncrement = require('mongoose-auto-increment'); 
var connection = mongoose.createConnection("mongodb://localhost/dfp", function(err){
   if(err){
     console.log(err);
   }else{
     console.log("connected to mongodb from app");
   }
});
autoIncrement.initialize(connection);
///////
var userSchema = mongoose.Schema({email: String, fname: String, lname: String, pwd: String, gender: String,
                                mobile: String, dob: { type: Date, default: Date.now }, ip : String, doj: { type: Date, default: Date.now }
                                },{ collection : 'user' }); 
userSchema.plugin(autoIncrement.plugin, 'user');
var user = connection.model('user',userSchema);
////////
  1. problem was in for loop; setting the fields.

Solution:

app.post('/save', function(req, res, next){
  var data = req.body;
  var dob = new Date(data['dob']).toISOString();
  var doj = new Date().toISOString();

  var newuser = new user();
  for(var i in data){
     if(i != dob) { newuser.set(i, data[i]); }
  }
  newuser.dob = dob;    newuser.doj = doj;

  newuser.save(function(error, users){
    if (error) {  next();  }
    // Return ID of element in response.
   console.log(users._id);
  });

});
liza
  • 3,687
  • 3
  • 16
  • 18