I am trying to push an element to an array in mongoose. I am doing it with update and $push. But it is not updating it in the database. This is my code. routes.js:
We are doing it this way - we are adding another model but in your case your just adding an array so put that in a variable and in place of req.body.resource ..
Also you can just use findByIdAndUpdate not the Async if you don't want to.
here is the model element:
resources: [{type: mongoose.Schema.Types.ObjectId, ref: 'Resource'}],
here is the method to add an item to the array:
//AddResource to a crew
export function addResource(req, res) {
if (req.body._id) {
delete req.body._id;
}
Crew.findByIdAndUpdateAsync(req.params.id,
{
$push: { "resources": req.body.resource }
},
{ safe: true, upsert: true },
function (err, model) {
if (err) {
//console.log(err);
return res.send(err);
}
return res.json(model);
});
and to remove:
//deleteResource to a crew
export function deleteResource(req, res) {
if (req.body._id) {
delete req.body._id;
}
// console.log(req.body.resource);
Crew.findByIdAndUpdateAsync(req.params.id,
{
$pullAll: { "resources": req.body.resource }
},
function (err, model) {
// console.log(model);
if (err) {
//console.log(err);
return res.send(err);
}
return res.json(model);
});