我试图创建一个接收2个日期的路线,并在数据库中互相交换这些日期。
控制台正在打印,但数据库中的数据没有变化
// @route PATCH api / swap// @ …
从 Mongo UpdateOne文档 UpdateOne需要3个参数 的 过滤 强> , 的 更新 强> , 的 打回来 强> 所以我相信你需要通过 的 _ID 强> 要改变的集合。
Update- find()返回一个游标并使用foreach将其转换为数组 find().toArray().then(..so on)
find().toArray().then(..so on)
// @route PATCH api/swap // @desc replace date // @access Public router.put("/swap", (req, res) => { const firstDate = req.body.firstDate; const secondDate = req.body.secondDate; console.log(firstDate, secondDate); Card.find().toArray().then(cards=>cards.forEach(card => { if (card.date === firstDate) { return card.updateOne( { date: firstDate } ,{ $set: { date: secondDate } }); } else if (card.date === secondDate) { return card.updateOne( { date: secondDate },{ $set: { date: firstDate } }); } else { return card; } }); })) .then(() => console.log("working")); });