保存与mongoose

我尝试简单地将我的mongodb基础中的新用户保存到控制器文件中:

var mongoose = require('mongoose'); var UserModel = mongoose.model('User'); // signup exports.create = function (req, res) { console.log(req.body); var user = new UserModel({ username: req.body.username, password: req.body.password, email: req.body.email }); user.save(function (err) { if (!err) { return console.log("created"); } else { return console.log(err); } }); } 

在debugging模式下,我可以看到user.save()没有执行错误…

我不知道为什么,因为我在用户名/密码/电子邮件字段中获得正确的值。

在这里我的模型文件:

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var objectId = Schema.ObjectId; var userSchema = mongoose.Schema({ username: String, password: String, email: String }); var userModel = mongoose.model('User', userSchema); 

编辑:

在我的app.js中,我有连接到mongodb:

  mongoose.connect('mongodb://localhost/mydb', function(err){ if(err) { console.log(err); } }); var userModel = require('./models/user'), userController = require('./controllers/users'); 

我将所有(控制器+模型)分组在一个文件中进行testing:

 var express = require('express') , routes = require('./routes') , userRoute = require('./routes/user') , http = require('http') , path = require('path') , io = require('socket.io') , mongoose = require('mongoose'); var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 8080); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(require('stylus').middleware(__dirname + '/public')); app.use(express.static(path.join(__dirname, 'public'))); }); app.configure('development', function(){ app.use(express.errorHandler()); }); mongoose.connect('mongodb://127.0.0.1/mydb', function(err){ if(err) { console.log(err); } else { console.log("Connected to mongo DB") } }); /*var userModel = require('./models/user'), tchatMessageModel = require('./models/tchatMessage'), userController = require('./controllers/users'), tchatMessageController = require('./controllers/tchatMessages'); */ app.get('/', routes.index); app.get('/signup', userRoute.signup); app.get('/signin', userRoute.signin); //app.post('/signup', userController.create); //app.get('/users', userRoute.list); var Schema = mongoose.Schema; var userSchema = Schema({ username: String, password: String, email: String }); var UserModel = mongoose.model('User', userSchema); app.post('/signup', function (req, res) { console.log(req.body); var user = new UserModel({ username: req.body.username, password: req.body.password, email: req.body.email }); user.save(function (err) { if (!err) { return console.log("created"); } else { return console.log(err); } }); }); var server = http.createServer(app); server.listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); }); 

我得到同样的问题…不明白。 也许问题在Expressconfiguration?

编辑:

问题解决了:

app.js

 mongoose.model("User", require("./models/user").userModel); 

model.js

 exports.userModel = userSchema; 

当您创buildmongoose模式时,您应该使用关键字“新”:

 var userSchema = new mongoose.Schema({ /*...*/ });