IT

model.find()가 mongoose에서 비어 있음을 반환합니다.

itgroup 2023. 6. 27. 22:06
반응형

model.find()가 mongoose에서 비어 있음을 반환합니다.

나는 mongoose에서 db의 db에 있는 컬렉션의 모든 데이터를 나열하는 작업을 하고 있습니다.

요청에서:

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

데이터베이스에 이미 항목이 있습니다. 그러나 위의 코드가 비어 있습니다. 왜죠?

EDIT : 다음 코드도 빈 값을 반환합니다.

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

당신의 문제는 몽구스가 컬렉션을 다원화하는 것입니다.Mongoose가 "조직"을 쿼리하고 있지만 데이터가 "조직"으로 mongodb에 있습니다.그들을 일치시키면 당신은 갈 수 있을 것입니다.mongo shell을 통해 mongodb에서 이름을 바꾸거나 mongoose에게 알려줄 수 있습니다.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)

공식 문서에서

채우기는 문서에서 지정된 경로를 다른 컬렉션의 문서로 자동 변경하는 프로세스입니다.

채우지 않고 사용해 보십시오.

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

언급URL : https://stackoverflow.com/questions/18628656/model-find-returns-empty-in-mongoose

반응형