Home > OS >  Getting an {"message":"Invalid update pipeline operator: \"_id\""} e
Getting an {"message":"Invalid update pipeline operator: \"_id\""} e

Time:08-06

I am trying to update two rows in my players table based on the id. I am trying to use the updateMany method where id can be found in an array of id's but I am getting the {"message":"Invalid update pipeline operator: \"_id\""} error. I checked the array to make sure it is valid id's. Here is my code

const winningTeam = asyncHandler(async (req, res) => {
  req.body.forEach((element) => {
    element.wins  = 1;
    element.lastPlayed = Date.now();
    element.percentage = (element.wins / (element.wins   element.wins)) * 1000;
  });
  let usersId = [];
  usersId.push(req.body[0]._id);
  if (req.body.length === 2) {
    usersId.push(req.body[1]._id);
  } 
  const player = await Player.updateMany({ _id: { $in: usersId } }, req.body);
  if (player) {
    res.status(200).json(player);
  } else {
    res.status(400);
    throw new Error("Invalid Data");
  }
});

CodePudding user response:

You should use $set property for the update parameter. I'm not sure about the structure of your req.body but it should be something like this:

Player.updateMany({ _id: { $in: usersId } }, {$set: req.body});

instead of this:

Player.updateMany({ _id: { $in: usersId } }, req.body);

Take a look at docs for updateMany

  • Related