Model.find() 在猫鼬中返回空 [重复]

Posted

技术标签:

【中文标题】Model.find() 在猫鼬中返回空 [重复]【英文标题】:Model.find() returns empty in mongoose [duplicate] 【发布时间】:2013-09-08 20:02:33 【问题描述】:

我正在研究 mongoose 以列出 mongodb 数据库中集合中的所有数据:

来自请求:

http://localhost:3000/listdoc?model=Organization

我正在执行以下代码:

exports.listDoc = function(req, res)     
var Model = mongoose.model(req.query.model); //This is defined and returns my desired model name
        Model.find().populate('name').exec(function(err, models) 
            if (err) 
                res.render('error', 
                    status: 500
                );
             else 
                res.jsonp(models);
            
        );
;

我已经在数据库中输入了我的条目 但是上面的代码返回空。为什么?

编辑:以下代码也返回空:

exports.listDoc = function(req, res) 
    var Model = mongoose.model(req.query.model);
    Model.find(,function(err,models)
        console.log(models);
         if (err) 
            res.render('error', 
                status: 500
            );
         else 
            res.jsonp(models);
        
    );
;

使用的模式:

var Organization = mongoose.Schema(
  name: String
);

【问题讨论】:

我没有看到您的代码 sn-p 有任何明显问题。您可以发布您的组织架构吗?您的集合在 mongodb 中是否称为“组织”? 我已经添加了使用的架构 看起来还可以。连接 mongodb 时是否连接到正确的数据库名称? 你怎么知道你在数据库中有一个条目?该系列的名称是什么? 集合名称:组织,它有文件,我可以从 mongo shell 中看到 【参考方案1】:

来自官方doc

填充是自动替换指定的过程 文档中的路径以及来自其他集合的文档。

无需填充即可尝试

Model.find().exec(function(err, models) 
            if (err) 
                res.render('error', 
                    status: 500
                );
             else 
                res.json(models);
            
        );

【讨论】:

这也返回空.. 试试res.json(models) 再次返回空【参考方案2】:

您的问题是 mongoose 将集合复数化。 Mongoose 正在查询“组织”,但您的数据在 mongodb 中作为“组织”。让它们匹配,你应该很高兴。您可以通过 mongo shell 在 mongodb 中重命名它,或者告诉 mongoose。来自猫鼬文档:

var schema = new Schema( name: String ,  collection: 'actor' );

// or

schema.set('collection', 'actor');

// or

var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName)

【讨论】:

非常感谢...我花了几个小时来研究为什么我总是得到一个空数组。 +1。如此简单的错误会吞噬你所有宝贵的时间...... 这么小的错误,但我花了很长时间才找到它。我已经准备好写 SO 问题了,在类似的问题中我发现了这个。 多么烦人的功能。谢谢回答 我用下划线命名集合,但我不知道这也会导致问题

以上是关于Model.find() 在猫鼬中返回空 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有嵌套地图的 Promise.all .. 第一张地图仅适用于其他人在猫鼬中返回空对象

当我想在猫鼬中从数据库中查找文档时,函数返回未定义 [重复]

在猫鼬中填充+聚合[重复]

如何在猫鼬中找到随机记录[重复]

在猫鼬中更新它们时如何访问每个文档字段[重复]

如何在猫鼬中返回自定义错误?