2014-10-23 2 views
5

Здравствуйте у меня есть эта схема (называется schema.js):Mongoose Populate не работает

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

ПИК БД: enter image description here

GET/api/rooms - ответ:

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

Когда я звоню в api/rooms выглядит нормально, но когда я вызываю api/av, я получил пустой массив [] .... Любая идея, что я делаю неправильно? Я должен упомянуть, что я вставил записи в коллекцию av для обеих комнатID

Спасибо заранее.

+1

thakns по этому вопросу –

ответ

5

По умолчанию Mongoose плюрализует название модели, чтобы создать имя коллекции, поэтому Mongoose ищет в коллекции avs вместо av.

Вы можете явно указать имя коллекции, передавая, что в качестве третьего параметра model:

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

спасибо, отлично работает – Teodor

+0

спасибо, что я застрял здесь –

0

Поскольку это самый популярный результат для запроса

мангуст заселить не работает

Я расскажу, почему он не работал для меня, хотя это не прямой ответ на этот вопрос d вопрос, в надежде, что это поможет кому-то

Проблема для меня в том, что я указал поля в select({..}, но не в поле, которое я пытался заполнить.

Смежные вопросы