猫鼬保存没有工作" id未定义"

时间:2016-10-25 22:48:25

标签: javascript node.js mongodb mongoose

这是我第一次使用Mongoose并且保存功能对我不起作用......

在用户模型文件中:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var User = mongoose.model('User', {
  name: Schema.Types.Mixed,
  gender: String,
  email: String
});

module.exports = User;

在我的用户控制器文件中:

// Create a user
router.post('/', function(req, res) {
  var user = new User(req.body);
  user._id = mongoose.Types.ObjectId();
  user.save(function(err) {
    if (err) {
      return res.status(500).json({
        error: "Error creating user: " + err
      });
    }

    return res.status(200).end();
  });
});

我尝试了所有内容,但我无法将用户对象保存到数据库中:" id未定义" 在db上,_id是一个ObjectId。

感谢。

2 个答案:

答案 0 :(得分:1)

mongoose.model receives collection name and a Schema as arguments,而不是常规对象。

所以你应该使用以下代码:

var schema = new mongoose.Schema({
  name: Schema.Types.Mixed,
  gender: String,
  email: String
});
var User = mongoose.model('User', schema);

答案 1 :(得分:0)

也许我们可以改变代码结构&&删除" user._id",请测试此代码:

  

*模型文件:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var UserSchema = new Schema({
  name: Schema.Types.Mixed,
  gender: String,
  email: String
});

module.exports = mongoose.model('User', UserSchema);
  

*控制器文件:

// Create a user
router.post('/', function(req, res) {
  var user = new User(req.body);
  user.save(function(err) {
    if (err) {
      return res.status(500).json({
        error: "Error creating user: " + err
      });
    }

    return res.status(200).end();
  });
});