2014-10-23 4 views
5

안녕하세요 나는이 스키마 (라고 schema.js)이 : 내 경로 파일에몽구스 채우기 작동하지

var mongoose = require('mongoose'), 
Schema = mongoose.Schema; 

var RoomSchema = new Schema({ 
    name: { type: String, required: true, index: { unique: true } }, 
    people: { type: Number, required: true }, 
    childrens: {type: Number, required: true}, 
    total: {type: Number, required: true} 
}); 

var Room = mongoose.model('Room', RoomSchema); 

var AvSchema = new Schema({ 
    roomId: {type: Schema.Types.ObjectId, ref: 'Room'}, 
    people: { type: Number, required: true }, 
    childrens: {type: Number, required: true}, 
    total: {type: Number, required: true} 
}); 

var Av = mongoose.model('Av', AvSchema); 

module.exports = { 
    Room: Room, 
    Av: Av 
}; 

:

module.exports = function(app) { 
    var model = require('../models/Schema'); 

    app.get('/api/rooms', function(req, res) { 
    model.Room.find(function(err, rooms) { 
     if (err) 
     res.send(err); 

     res.json(rooms); 
    }); 
    }); 


    app.get('/api/av', function(req, res) { 
    model.Av.find().populate('roomId').exec(function(err, av) { 
     if (err) 
     res.send(err); 

     res.json(av); 
    }); 
    }); 
}; 

DB를의 그림 : enter image description here

을 GET/API/회의실 - 응답 :

[{ 
    "_id": "5444d0dd9a31437167eea816", 
    "name": "Single", 
    "people": 1, 
    "childrens": 1, 
    "total": 4 
}, { 
    "_id": "5444d1009a31437167eea817", 
    "name": "Double", 
    "people": 2, 
    "childrens": 2, 
    "total": 10 
}] 

내가 api를 호출 할 때/객실 괜찮아 보이지만 내가 API를 호출하면/av 난 빈 배열 [] .... 내가 뭘 잘못 생각해? 두 개의 room에 대한 av 컬렉션에 레코드를 삽입했다고 언급해야합니다.

감사합니다.

+1

이 질문에 대한 답변을 –

답변

5

기본적으로 Mongoose는 모델 이름을 복수화하여 컬렉션 이름을 지정하므로 몽구스는 av 대신 avs 컬렉션을 찾습니다.

명시 적으로 전달하여 컬렉션 이름을 설정할 수 있습니다 세 번째 매개 변수로 model에 :

var Av = mongoose.model('Av', AvSchema, 'av'); 
+0

고마워, 잘 했어 – Teodor

+0

여기에 붙어있어서 고마워. –

0

몽구스가

작동하지 채우는 쿼리의 가장 인기있는 결과이기 때문에

직접 해결할 수는 없지만 나에게 적합하지 않은 이유를 설명해 드리겠습니다. D 질문이 도움이 될 것입니다.

나를위한 문제는 내가 입력하려고했던 필드가 아닌 select({..}에 필드를 지정했기 때문입니다.