Search code examples
mongodbexpressmongooseincrement

make a path that increments the count


I'm trying to make a post request that will increment my schema using express and mongoose, which is :

const ItemSchema = new Schema({
  formName: String,
  inputs: [
    {
      inputLabel: {
        type: String,
        required: true
      },

      inputType: {
        type: String,
        required: true,
        enum: ['text', 'color', 'date', 'email', 'tel', 'number']
      },

      inputValue: {
        type: String,
        required: true
      }
    }
  ],
  numOfSubs: { type: Number, default: 0 }
});

for my code purposes I want to make a route that will increase by 1 the numOfSubs everytime I use it,since there are a few listings, I have the ID so I need to search it, and I'm not sure how to write the path

router.post('/increase', (req, res) => {
 "find and increase by 1 " 

});

and I will use the fetch like so:

fetch('/api/items/increase', {
  method: 'POST',
  body: JSON.stringify({ _id }),//the ID I of the collection I want to increment
  headers: {
    'content-type': 'application/json'
  }
});

Solution

  • try this using mongo $inc operator

    router.post('/increase', (req, res, next) => {
    const _id = req.body._id;
    
       MyModel.findByIdAndUpdate(_id , { $inc: {numOfSubs: 1} }, { new: true },  (err,updateRes)=>{
          if(err) return next(err);
          return res.json({sucess: true});
       });
    
    });