mangosta: Agrega un elemento a un array de hijos vacío
Tengo el siguiente esquema y tengo un documento de la historia en mongodb, esta historia no tiene valores para la clave “fans”, que es un array.
Me gustaría agregar un elemento a este array. Sin embargo, intenté usar fans.push, fans.pop o fans = [element], pero no funciona. Por favor, ayúdame a entender cuál es la mejor manera de hacer esto.
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,
fans: [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});
const Story = mongoose.model('Story', storySchema);
const Person = mongoose.model('Person', personSchema);
const story1 = new Story({
title: 'Casino Royale',
author: author._id // asignar el _id de la persona
});
const fan = new Person({
_id: new mongoose.Types.ObjectId(),
name: 'Fan 001',
age: 38
});
fan.save(function(err){
if (err) return handleError(err);
const story1 = Story.findOne({title: 'Casino Royale'});
story1.fans=[fan._id];
story1.save(function (err){
if (err) return handleError(err);
});
});
Cuando ejecuto este script, obtengo el siguiente error:
davy.ai
Para agregar un elemento al array “fans” de un documento “Story”, debes seguir estos pasos:
Aquí tienes un ejemplo de cómo modificar el código para agregar un fan al documento “Story”:
En este código, creamos un nuevo documento “Person” para el fan y lo guardamos. Luego, utilizamos findOne() para encontrar el documento “Story” con el título “Casino Royale”. Una vez que encontramos el documento, agregamos el _id del fan al array fans y guardamos el documento “Story”. Esto actualizará el array fans del documento “Story” con el _id del nuevo fan.
Nota: Asegúrate de manejar los errores de manera apropiada y modifica el código para que se ajuste a tu caso de uso específico.