Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于交换节点与mongo+中的值的函数;猫鼬_Javascript_Arrays_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 用于交换节点与mongo+中的值的函数;猫鼬

Javascript 用于交换节点与mongo+中的值的函数;猫鼬,javascript,arrays,node.js,mongodb,mongoose,Javascript,Arrays,Node.js,Mongodb,Mongoose,我正在尝试创建一个包含两个日期的路由,并在数据库中相互交换这些日期 控制台正在打印,但数据库中的数据没有更改 // @route PATCH api/swap // @desc replace date // @access Public router.put("/swap", (req, res) => { const firstDate = req.body.firstDate; const secondDate = req.body.secondDate;

我正在尝试创建一个包含两个日期的路由,并在数据库中相互交换这些日期

控制台正在打印,但数据库中的数据没有更改

// @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.updateOne({ date: firstDate }, { $set: { date: secondDate } });

  Card.find()
    .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"));
});
从UpdateOne获取3个参数过滤器更新回调,因此我认为您需要传递集合的\u id以进行更改

Update-find()返回一个游标并使用foreach,使用
find().toArray()将其转换为数组。然后(…依此类推)

从UpdateOne获取3个参数过滤器更新回调,因此我认为您需要传递集合的\u id以进行更改

Update-find()返回一个游标并使用foreach,使用
find().toArray()将其转换为数组。然后(…依此类推)


是的,我有,但它仍然不起作用,我会继续,并更新我目前的一个如何我有它我正在使用日期作为我的唯一密钥它在foreach之外工作,但不在内部这是我的问题我只是尝试了它不幸的是相同的结果,如果我把卡。updateOne({date:firstDate},{$set:{date secondDate});有qoutes和没有qoutes都在foreach函数之外工作,所以在if块中,你正在检查
card.id===firstDate
你不应该检查
card.date===firstDate
,因为你将日期用作你的过滤器mongo没有id,并且_id返回objectidHoops,这实际上只是一个输入错误,谢谢你,但即使如此现在更新不起作用是的,我有,但它仍然不起作用我会继续更新我当前的一个到我的状态我用date作为我的唯一密钥它在foreach外部工作但不在内部这是我的问题我只是尝试了同样的结果,如果我放置Card.updateOne({date:firstDate},{$set:{date:secondDate}}); 有qoutes和没有qoutes都在foreach函数之外工作,所以在if块中,你正在检查
card.id===firstDate
你不应该检查
card.date===firstDate
,因为你将日期用作你的过滤器mongo没有id,并且_id返回objectidHoops,这实际上只是一个输入错误,谢谢你,但即使如此现在更新不起作用
// @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"));
 });