【问题标题】:Mongoose Find not working猫鼬发现不工作
【发布时间】:2013-11-01 07:11:03
【问题描述】:

这是我第一次在 Node/Express/Mongoose 中编写 MVC 应用程序,所以我真的需要一些帮助。我的 .find() 命令什么也没找到! :(

结构是我在根目录中有一个 /app 文件夹。 /app 文件夹包含 /models(模式)、/controllers 和 /views。我在根目录外有 app.js。

app.js 中的某处:

// all necessary config/setup stuff..
var mongoose = require('mongoose');
mongoose.connect(config.db);
var app = express();
require('./config/routes')(app)

在我的 routes.js 文件中:

var skills = require('../app/controllers/skills');
app.get('/', skills.showall);

我的控制器技能.js 包含:

var Skill = require('../models/skill');

exports.showall = function(req, res) {
    Skill.find({}, function(err, docs){
        if (!err) {
            res.render('index', {title: 'Skilldom', skills: docs});
        }
        else {
            throw err;
        }
    });
}

最后我的 Model Skill.js 包含:

var mongoose = require('mongoose');

//Skill schema definition
var skillSchema = new mongoose.Schema({
    name: String,
    length: String,
});

var Skill = mongoose.model('Skill', skillSchema);

module.exports = Skill;

我的索引视图呈现,所以我看到了我的 index.jade 模板中的内容,但由于某种原因,模型中的 find 命令没有获取任何内容。我可以确认我的数据库(在 MongoHQ 中)有真实数据。

有什么想法吗?

【问题讨论】:

  • 您是使用 Mongoose 将数据插入数据库,还是通过其他方式到达那里?
  • 在这种情况下,您必须知道 Mongoose 如何命名存储模型的集合(例如,Skill 模型可能存储在名为 skills 的集合中)。手动设置集合名称见the docs
  • 啊啊。非常感谢 - 这成功了! :)

标签: node.js mongodb model-view-controller express mongoose


【解决方案1】:

为此更改您的Skill.js

var mongoose = require('mongoose');
mongoose.set('debug', true);

//Skill schema definition

var skillSchema = new mongoose.Schema({
  name: String,
  length: String,
});

var Skill = mongoose.model('Skill', skillSchema);
module.exports = Skill;

之后,您可以在控制台中查看 mongoose 是否正在执行您的查询。

【讨论】:

    【解决方案2】:

    我的情况和你描述的一样,结果我不明白猫鼬集合命名的魔力,在你的代码中它会尝试加载“技能”,如果那不是它在你的 mongo 中命名的什么都不会退还。真的应该扔一个“这样的集合”错误而不是恕我直言。

    【讨论】:

      【解决方案3】:

      以下方法为您的收藏提供了一个备用名称

      var skillSchema = new mongoose.Schema({
        name: String,
        length: String,
      },{collection : 'Skill'});
      
      or 
      
      var Skill = mongoose.model('Skill', skillSchema,''Skill);
      

      【讨论】:

        猜你喜欢
        • 2018-07-22
        • 2018-05-02
        • 2017-05-26
        • 2013-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-14
        • 2021-02-10
        相关资源
        最近更新 更多