一尘不染

Model.find()在猫鼬中返回空

node.js

我正在研究猫鼬在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
});

阅读 229

收藏
2020-07-07

共1个答案

一尘不染

您的问题是猫鼬将集合复数。猫鼬正在查询“组织”,但您的数据在mongodb中为“组织”。使它们匹配,您应该很好。您可以通过mongoshell在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)
2020-07-07