【问题标题】:Why is my node express app not fetching data from mongoose?为什么我的 node express 应用程序没有从 mongoose 获取数据?
【发布时间】:2016-03-08 21:35:35
【问题描述】:

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

根 - 控制器 -user.js - 模型 -user.js - 上市 -样式表 -style.css
- 意见 -index.jade - 应用程序.js - 包.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 中创建了一个数据库,下面是我的收藏列表:

我可能仍然认为它是 php 的方式并且在这里遗漏了一些要点。有人可以指出我在这里做错了什么吗?

【问题讨论】:

  • 数据库名称应为users
  • 或者更重要的是,因为@Yerken 提到您当前的“收藏”名称是user 而不是猫鼬所期望的users,然后将模型定义为mongoose.model("user",userSchema,"user")。其中“第三个”参数设置集合名称。
  • @Yerken 谢谢!将数据库从“用户”重命名为“用户”实际上起到了作用。另外,我是否使用也没关系: module.exports = mongoose.model('user', userSchema);或 module.exports = mongoose.model('users', userSchema);数据库重命名后。

标签: javascript node.js mongodb express mongoose


【解决方案1】:

Mongoose 会自动寻找plural version of your model name,有关此规则的更多详细信息请参考source codeMongoose.model 的定义是

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

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

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

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 2020-07-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2022-11-23
    • 2014-11-09
    • 2011-11-08
    • 1970-01-01
    相关资源
    最近更新 更多