var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var models = require("./models");
for(var m in models){
mongoose.model(m,new Schema(models[m]));
}
module.exports = {
getModel: function(type){
return _getModel(type);
}
};
var _getModel = function(type){
return mongoose.model(type);
};
db/Handel.js
module.exports = {
user:{
name:{type:String,required:true},
password:{type:String,required:true},
telephone:{type:String,required:true,unique:true},
address:{type:String,required:true},
birthday:{type:Date,required:true},
gender:{type:String,required:true},
credit:{type:Number,default:0},
status:{type:Number,default:0}
}
};
/db/models.jsCreate a folder called /db in project root folder
Handel.js which creates Schema defined in models.js
models.js which defines schema
var User = global.dbHandel.getModel('user');
User.findOne({name: uname},function(err,doc){ // 同理 /login 路径的处理方式
if(err){
res.sendStatus(500);
req.session.error = '网络异常错误!';
console.log(err);
}else if(doc){
req.session.error = '用户名已存在!';
res.sendStatus(500);
}else{
User.create({ // 创建一组user对象置入model
"name": uname,
"password": upwd,
"birthday": ubirthday,
"address": uaddress,
"gender": ugender,
"telephone": utelephone
},function(err,doc){
if (err) {
res.sendStatus(500);
console.log(err);
} else {
req.session.error = '用户名创建成功!';
res.sendStatus(200);
}
});
}
});
In routes/index.js
search user in database use name filed. if not exist, create user.
Problem encountered: cannot find collection using db.user.find()
Solution: Mongoose automatically add a "s" at the end of "user", use db.users.find(), can show the inserted user info.