Tengo problemas para agregar datos a una matriz en mongodb. Este es mi esquema:
const userSchema=mongoose.Schema({ name: String, email: String, password: String, blog: [{ date: Date, post: String }], week: [{ weekday: String, tasks:[String] }], todo: [String] }); const User= mongoose.model("User", userSchema);Quiero agregar datos a todo pero no funciona. Aquí está el código para eso:
app.post("/list", (req,res) =>{ console.log(req.body); const user = req.body.userid; const item = req.body.data; console.log(user); console.log(item); User.findOne({_id: user}, function(err, foundUser){ if(err){ console.log(err); } else{ foundUser.todo.push(item); foundUser.save(); res.send("ToDo Updated"); } }); });Obtengo usuario y elemento de la interfaz. Cuando estoy iniciando sesión en la consola foundUser, obtengo el usuario pero no puedo agregarle un elemento.
Es porque save() es un método asíncrono, intente usar await
app.post("/list", (req,res) =>{ console.log(req.body); const user = req.body.userid; const item = req.body.data; console.log(user); console.log(item); User.findOne({_id: user}, async function(err, foundUser){ if(err){ console.log(err); } else{ foundUser.todo.push(item); await foundUser.save(); res.send("ToDo Updated"); } }); });app.post("/list", (req,res) =>{ console.log(req.body); const user = req.body.userid; const item = req.body.data; console.log(user); console.log(item); User.findOne({_id: user}, function(err, foundUser){ if(err){ console.log(err); } else{ foundUser.todo.push(item); await User.updateOne({ _id: foundUser._id }, { $set: foundUser }); res.send("ToDo Updated"); } }); });Otro enfoque