我正试图根据id更新玩家表中的两行。我正试图使用updateMany方法,在id的数组中可以找到id,但我得到了{"message":"Invalid update pipeline operator: "_id""}
错误。我检查了数组以确保它是有效的id。这是我的代码
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");
}
});
您应该使用$set
属性作为更新参数。我不确定你的req.body
的结构,但它应该是这样的:
Player.updateMany({ _id: { $in: usersId } }, {$set: req.body});
而不是这个:
Player.updateMany({ _id: { $in: usersId } }, req.body);
查看文档以进行更新许多