2014-10-23 18 views
5

Ciao ho questo schema (chiamato schema.js):Mongoose Popola non funziona

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

nel mio file Percorso:

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

un pic del db: enter image description here

GET/api/rooms - risposta:

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

Quando chiamo api/rooms sembra buono ma quando chiamo api/av ho un array vuoto [] .... Qualche idea su cosa faccio di sbagliato? Devo dire che ho inserito i record nella collezione di av per entrambe le roomsID

Grazie in anticipo.

+1

thakns per questa domanda –

risposta

5

Per impostazione predefinita, Mongoose pluralizza il nome del modello per ottenere il nome della raccolta, quindi Mongoose sta cercando nella raccolta avs anziché av.

È possibile impostare in modo esplicito il nome della raccolta passando che come terzo parametro per model:

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

grazie, ottimo lavoro – Teodor

+0

grazie sono rimasto bloccato qui –

0

Dal momento che questo è il risultato più importante per la query

mangusta non popola di lavoro

Includerò il motivo per cui non ha funzionato per me, anche se non è una risposta diretta a questo già risolvere d domanda, nella speranza che possa aiutare qualcuno

Il problema per me era che avevo specificato campi in select({..} ma non nel campo che stavo cercando di popolare.

Problemi correlati