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
});
4

2 回答 2

94

您的问题是 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)
于 2013-09-05T06:45:02.300 回答
0

来自官方文档

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

尝试不填充

Model.find({}).exec(function(err, models) {
            if (err) {
                res.render('error', {
                    status: 500
                });
            } else {
                res.json(models);
            }
        });
于 2013-09-05T06:22:43.237 回答