【问题标题】:Looping through and filtering the data in express and mongoose循环过滤express和mongoose中的数据
【发布时间】:2020-10-12 15:03:14
【问题描述】:

我有一个带有 Node.js、Express 和 Mongoose 的后端。我正在尝试过滤嵌套在对象深处的文档数组,但由于某种原因我无法访问该数组。路由req有一个登录用户的附件文档,下面是mycode。

router.post("/users/:id/accept", auth, async (req, res) => { 
  try {
    // this filter is not working
    await req.user.friendRequests.filter((usr) => usr.owner !== req.params.id);
    await req.user.save();
    res.send("Accepted")
  } catch (error) {
    res.status(400).send(error.message);
  }
});

如果我console.log(req.user) 我得到:

{
  dateOfBirth: { date: 28, month: 'Sep', year: 2002 },
  gender: 'male',
  cover: null,
  _id: 5f71c0674a54b03e70fcbe97,
  firstName: 'jake',
  lastName: 'sulli',
  email: 'hello2@gmail.com',
  friendRequests: [
      _id: 5f71c1184a54b03e70fcbea0,
      owner: '5f71c0d14a54b03e70fcbe9b',
      friend: false,
      name: 'mad max'
    },
    {
      _id: 5f76a7872b21c8208f3caa5f,
      owner: '5f742182931ab9125bc2ec9d',
      friend: false,
      name: 'shriya rai'
    },
    {
      _id: 5f76f6fa85e74758e76cb1ec,
      owner: '5f76f541ab7a1255dc78987d',
      friend: false,
      name: 'dara singh'
    }
  ],
}

如果我使用console.log(),我无法获得friendRequests 数组,但我可以获得nameemailgender。我想要实现的是,如果 friendRequests.owner === req.params.id 那么我想从数组中删除该对象。

【问题讨论】:

    标签: javascript express mongoose


    【解决方案1】:

    您的 friendRequests 数组存在一些问题。

    首先你没有正确开始或结束你的对象。

    friendRequests: [ 
        {        <=========================== Need another bracket 
          _id: 5f71c1184a54b03e70fcbea0,
          owner: '5f71c0d14a54b03e70fcbe9b',
          friend: false,
          name: 'mad max'
        },
        {
          _id: 5f76a7872b21c8208f3caa5f,
          owner: '5f742182931ab9125bc2ec9d',
          friend: false,
          name: 'shriya rai'
        },
        {
          _id: 5f76f6fa85e74758e76cb1ec,
          owner: '5f76f541ab7a1255dc78987d',
          friend: false,
          name: 'dara singh'
        }
      ]
    

    其次确保你把那些 _id 变成字符串

    5f76f6fa85e74758e76cb1ec to "5f76f6fa85e74758e76cb1ec"
    

    【讨论】:

    • 我可能在添加问题时删除了括号,因为还有其他数据以及令牌数组等。问题是我如何访问路径内的 friendRequests 数组 所以我可以删除与 req.params.id 匹配的对象。因为目前如果我 console.log(req.user.friendRequests) 它给出 undefined
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2021-11-21
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 2018-04-30
    相关资源
    最近更新 更多