为什么我的节点表示应用程序不从mongoose中获取数据?

我有一个PHP MVC的背景,刚开始学习Nodejs。 这是我的应用程序目录结构:

根 – 控制器-user.js – 模型-user.js – 公共-stylesheet -style.css
– views -index.jade – app.js – package.json – gulpfile.js

这是我的控制器文件:user.js

var User = require('../models/user.js'); exports.list = function(req, res){ User.find(function(err, users) { res.send(users); }); }; 

这是我的模型文件:user.js

 var mongoose = require('mongoose'), Schema = mongoose.Schema; mongoose.createConnection('mongodb://localhost/mydb'); var userSchema = new Schema({ name: String, country: String, email: String, password: String, }); module.exports = mongoose.model('user', userSchema); 

以下是我的app.js文件:

/ ** *模块依赖关系。 * /

 var express = require('express') , controllers = require('./controllers') , employee = require('./controllers/employee') , user = require('./controllers/user') , http = require('http') , path = require('path'); var app = express(); app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.static(path.join(__dirname, 'public'))); app.get('/', controllers.index); app.get('/employees', employee.list); app.get('/user',user.list); http.createServer(app).listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); }); 

我使用命令行在mongo中创build了一个数据库,下面是我的集合列表:

在这里输入图像说明

我可能仍然认为这是PHP的方式,并在这里错过了一些观点。 有人能指出我在这里做错了吗?

Mongoose会自动寻找你的模型名称的复数版本,关于这个规则的更多细节请参考源代码 , Mongoose.model定义是

 Mongoose#model(name, [schema], [collection], [skipInit]) 

要解决你的问题,你可以定义你的模型

  mongoose.model('user', userSchema, { collection: 'user' });