Este es un ejemplo de documentos de mongoose sobre poblar:
const personSchema = Schema({ _id: Schema.Types.ObjectId, name: String, age: Number, stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }] }); const storySchema = Schema({ author: { type: Schema.Types.ObjectId, ref: 'Person' }, title: String, }); Entonces, la person tiene una lista de stories y cuando buscamos persons podemos incluir stories usando populate('stories') . Hasta aquí todo bien.
Pero para que eso funcione, al crear Story , necesitamos agregar storyId a la lista de stories en Person . Vengo del fondo de SQL , donde no es necesario hacer eso, encontraría stories relacionadas automáticamente basadas en authorId en Story .
Entonces, la pregunta es, ¿se puede hacer de la misma manera aquí, sin necesidad de actualizar la propiedad de stories en Person ?
Encontré una solución, se llama virtual property :
AuthorSchema.virtual('posts', { ref: 'BlogPost', localField: '_id', foreignField: 'author' }); De esta manera, puedo completar las posts en la consulta sin guardar postIds de publicación en el esquema Author/Person .