Necesito ayuda con arreglos en Mongoose. Así es como se ve mi esquema: -
const alertsSchema = new mongoose.Schema({ Alert_Date: String, Alert_StartTime: String, Alert_EndTime: String, Alert_RuleName: String, Alert_RuleId: String, Alert_EntryNumber: String, Alert_AlertId: String, Alert_Description: String, Alert_TriggerTime: String, Alert_Activities: [{ Alert_Activities_ActivityType: String, Alert_Activities_ActivityTime: String, Alert_Activities_AreaName: String, Alert_Activities_AreaType: String, Alert_Activities_Position: Array, Alert_Activities_Duration: Number, Alert_Activities_SecondVesselId: String, Alert_Activities_SecondVesselName: String, Alert_Activities_SecondVesselClassCalc: String, Alert_Activities_SecondVesselSize: String, Alert_Activities_SecondVesselMMSI: String, Alert_Activities_SecondVesselIMO: String, }], })Alert_Activities es una matriz que proviene de mi aplicación js de nodo ascendente. Implementé una funcionalidad de fswatch y tan pronto como cambia un archivo en particular, busco guardar el registro en mi colección. El archivo ascendente siempre contendrá una matriz. Generalmente en un promedio de alrededor de 4 a 5 registros. En resumen, Alert_Activities estará allí para cada elemento de la matriz.
Estoy ejecutando un bucle for y luego intento guardar los cuatro elementos de una sola vez en mi colección. myObject es la lectura completa del archivo ascendente usando fs.read
for(i=0; i<myObject.length; i++){ var newAlertData = new alertRegister({ Alert_Date: date1, Alert_StartTime: startNotificationDate, Alert_EndTime: endNotificationDate, Alert_RuleName: myObject[i].ruleName, Alert_RuleId: myObject[i].ruleId, Alert_EntryNumber: myObject[i].entryNumber, Alert_AlertId: myObject[i].alertId, Alert_Description: myObject[i].description, Alert_TriggerTime: myObject[i].triggerTime, // Alert_Activities: myObject[i].activities, }); newAlertData.save(function(err,data1){ if(err){ console.log(err) } else { console.log("data saved") } })Las Alert_Activities obviamente no se guardarán. ¿Cuál es la forma correcta de hacer esto en Mongoose?
Si está tratando con Mongoose Documents, no con objetos javascript .lean() , probablemente necesitará marcar los campos de matriz como modificados a través markModified y solo luego usar .save() .
Además,
directModifiedPathspodría ayudarlo a verificar qué campos se han modificado en el documento.
Me di cuenta de que sus Alert_Activities son en realidad una matriz de objetos, así que asegúrese de que los documentos de mangosta resultantes, que está tratando de .save() realmente satisfagan todas las reglas de validación.
Si los cambios en algunos campos se guardan con éxito pero los otros no, entonces definitivamente hay algo mal con los nombres de los campos o la validación. Y el DB/mangoose no le provoca un error, porque el documento ya se ha guardado, incluso en particular.