在创buildmongoose模型时,不能读取未定义的属性“用户”

我正在尝试创build一个mongoose模型,并使用它来从MongoDB中获取数据,但是我得到了exception

package.json的我的mongoose版本是: “mongoose”:“4.5.5”

TypeError: Cannot read property 'users' of undefined 

现在这里是我的演示代码:

 var mongoose = require("mongoose"); var schema = mongoose.Schema; var Users = { _id : { type : String, require : true }, username : { type : String, required : true }, password : { type : String, required : true } }; var UsersModel = new mongoose.model('users', Users); var newUser = new UsersModel({"username":"A", "password":"V"}); newUser.save(function(err, result){ if(err){ console.log('>>>>>> Error'); }else{ console.log('>>>>>> ' + JSON.stringify(result, null, 4)); } }); 

这里是错误:

 /home/ankur/Private/Work/ps/node_modules/mongoose/lib/index.js:343 if (!this.modelSchemas[name]) { ^ TypeError: Cannot read property 'users' of undefined at new Mongoose.model (/home/ankur/Private/Work/ps/node_modules/mongoose/lib/index.js:343:25) at Object.<anonymous> (/home/ankur/Private/Work/ps/models_mongoose/Users.model.js:24:21) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:929:3 

现在我的问题是在这个代码中,我几乎没有做任何额外的事情,只是configuration架构,在该架构上创build一个新的模型,并保存它。 那么我错过了那些东西?

请提出一些意见。

你有几个错误。 我附上了一个完整的工作示例:

 var mongoose = require("mongoose"); mongoose.connect('mongodb://localhost:27017/db_name'); //you need open to connection - this is an example of valid connection string var Schema = mongoose.Schema; var Users = new Schema({ // example from docs _id : { type : String, require : true }, username : { type : String, required : true }, password : { type : String, required : true } }); var UsersModel = mongoose.model('users_test', Users); //remove 'new' keyword var newUser = new UsersModel({"username":"A", "password":"V", "_id": 0}); // you also need here to define _id since, since you set it as required. newUser.save(function(err, result){ if(err){ console.log('>>>>>> Error'); }else{ console.log('>>>>>> ' + JSON.stringify(result, null, 4)); } }); 

总结一下:

  1. 你应该通过调用connect方法在mongoose对象上进行连接
  2. 在创build模型时使用new Schema构造函数
  3. var UsersModel = mongoose.model(...)删除new关键字var UsersModel = mongoose.model(...)
  4. 添加具有值的_id键,因为没有这个,你会得到这个值缺失的错误

您混淆了架构和模型。

 var mongoose = require("mongoose"); var Schema = mongoose.Schema; var Users = new Schema({ // add schema here! _id : { type : String, require : true }, username : { type : String, required : true }, password : { type : String, required : true } }); var UsersModel = mongoose.model('users', Users); // remove new here! var newUser = new UsersModel({"username":"A", "password":"V"});