Mi esquema se ve así...
{ name: String, email: { type: String, required: true, index: true, }, age: { type: Number, default: 18, required: false, minlength: [2, 'Too short'], maxlength: [2, 'Too long'], }, role: { type: String, default: 'client', }, address: String, answers: [answerSchema], } const answerSchema = new Schema({ position: Number, slider: Number, scale: Number, })El ID de usuario es conocido. ¿Cómo agrego valores a la matriz user.answers?
He intentado ...
const updated = await User.findByIdAndUpdate( { _id: req.params.id }, { $set: {answers}}, { new: true } )así como $push ... simplemente no sé cómo hacer esto.
Lo primero: debe declarar answerSchema antes del esquema principal porque arrojó el error:
ReferenceError: Cannot access 'answerSchema' before initializationAsí que tu código tiene que ser:
const answerSchema = new Schema({ ... }) // First const mainSchema = new Schema({ ... }) // Second Luego, en la consulta, si usa findByIdAndUpdate , puede usar el _id directamente en el primer parámetro. También puede usar $push para agregar un nuevo objeto, como este:
const updated = await User.findByIdAndUpdate( req.params.id, { $push: { answers:{ /* your object to insert here*/ } }}, { new: true } ) Hay un ejemplo de cómo funciona $push aquí