Pregunta Hacer referencia a otro esquema en Mangosta


si tengo dos esquemas como:

var userSchema = new Schema({
    twittername: String,
    twitterID: Number,
    displayName: String,
    profilePic: String,
});

var  User = mongoose.model('User') 

var postSchema = new Schema({
    name: String,
    postedBy: User,  //User Model Type
    dateCreated: Date,
    comments: [{body:"string", by: mongoose.Schema.Types.ObjectId}],
});

Traté de conectarlos juntos como en el ejemplo anterior, pero no pude encontrar la manera de hacerlo. Eventualmente, si puedo hacer algo como esto, me haría la vida muy fácil

var profilePic = Post.postedBy.profilePic

74
2017-08-01 18:10


origen


Respuestas:


Parece que el método populate es lo que estás buscando. Primero haga un pequeño cambio en su esquema de publicación:

var postSchema = new Schema({
    name: String,
    postedBy: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
    dateCreated: Date,
    comments: [{body:"string", by: mongoose.Schema.Types.ObjectId}],
});

Luego haz tu modelo:

var Post = mongoose.model('Post', postSchema);

Luego, cuando realiza su consulta, puede rellenar referencias como esta:

Post.findOne({_id: 123})
.populate('postedBy')
.exec(function(err, post) {
    // do stuff with post
});

124
2017-08-01 18:44



Adición: Nadie mencionó "poblar" --- vale mucho su tiempo y dinero mirar el método de rellenar de mangostas: también explica la referencia de documentos cruzados

http://mongoosejs.com/docs/populate.html


17
2018-02-12 04:52