【问题标题】:Unable to save using mongoose无法使用猫鼬保存
【发布时间】:2016-02-09 05:21:27
【问题描述】:

寻求以下帮助:

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

架构:

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

我无法将这条新记录保存到用户表中。

【问题讨论】:

  • 没有错误出现但新记录没有保存
  • 您到达console.log(newuser.get('_id')); 行了吗?
  • 是的:它是:563f364ded3280dc188c1eb5
  • 如果您在findByIdAndUpdate 的回调中调用newuser.save 会怎样? (在你设置了_id之后)
  • 我在stackoverflow.com/a/30164855/2168120..中做了什么,但它也没有保存数据..然后看看它是否返回一个新的seq..我这样做了

标签: node.js mongodb mongoose


【解决方案1】:

感谢this

  1. 使用 mongoose-auto-increment 我可以创建一个自动递增的 _id。

解决方案:

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. 问题出在 for 循环中;设置字段。

解决方案:

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

});

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2021-09-25
    • 2016-06-29
    • 2017-03-08
    • 1970-01-01
    • 2019-07-04
    • 2014-11-07
    • 2015-02-05
    • 2018-12-30
    相关资源
    最近更新 更多