Push element to array in mongoose

前端 未结 4 527
逝去的感伤
逝去的感伤 2021-01-20 07:42

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:



        
4条回答
  •  自闭症患者
    2021-01-20 08:09

    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);
        });
    

提交回复
热议问题