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.

5
  • no error is coming but the new record is not saved Commented Nov 8, 2015 at 13:15
  • do you reach the console.log(newuser.get('_id')); line? Commented Nov 8, 2015 at 13:21
  • yes : and it is: 563f364ded3280dc188c1eb5 Commented Nov 8, 2015 at 13:23
  • what if you call newuser.save inside the findByIdAndUpdate's callback? (after you set its _id) Commented Nov 8, 2015 at 13:30
  • I did exactly what in stackoverflow.com/a/30164855/2168120.. but it was also not saving the datas..and then to see whether it is returning a new seq..i did this way Commented Nov 8, 2015 at 13:34

1 Answer 1

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);
  });

});
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.