Req.body is not iterable in node.js

Using for...of is a great idea, but you can't use it like you are to loop through an object's properties. Thankfully, Javascript has a few new functions that turn 'an object's properties' into an iterable.

Using Object.keys:

const input = {
  firstName: 'Evert',
} 
for (const key of Object.keys(input)) {
  console.log(key, input[key]);
}

You can also use Object.entries to key both the keys and values:

const input = {
  firstName: 'Evert',
} 
for (const [key, value] of Object.entries(input)) {
  console.log(key, value);
}

I know this answer might be too late to help you but it might help someone in 2020 and beyond.

First, comment out this block:

//const updateOps = {};

//for (const ops of req.body) {
//updateOps[ops.propName] = ops.value;
//}

and change this line:

Product.updateMany({_id: id}, {$set: updateOps})

to this:

Product.updateMany({_id: id}, {$set: req.body})

Everything else is fine. I was having similar issues, but this link helped me: [What is the difference between ( for... in ) and ( for... of ) statements in JavaScript?