javascript 如何从node.js中的MongoDB获取特定用户数据

bf1o4zei  于 2023-01-24  发布在  Java
关注(0)|答案(2)|浏览(171)

我正在做一个电子商务网站的项目。这里我有一个问题。
1.我已经使用get方法从MongoDB检索用户数据
1.我已经传递了正确的参数,并且语句UserId:req.params.userId已经得到满足,我们可以在nodejs终端中看到。
1.我希望只获取UserId === UserId的特定用户数据,但在我的结果中,所有用户的数据都弹出了。
我尝试这一点,但我得到的解决方案是所有的用户数据
我曾尝试使用findOne(),但结果是635ea7e5e931e12c9f851dd3用户详细信息。其中参数是63a8a0f77addf42592eed1e5。其中我希望获得我传入参数的唯一用户。

router.get("/find/:userId", verifyTokenAndAuthorization, async (req, res) => {
  try {
    const cart = await Cart.find( 
    {userId : req.params.userId});
    console.log("parameter: "+req.params.userId)
     return res.status(200).json(cart);
  } catch (err) {
    res.status(500).json(err);
  }

请求参数userId是“63a8a0f77addf42592eed1e5”。我只需要这个。但它弹出了所有用户数据。
显示参数的Node.js终端与userId相同

显示数据库中所有用户响应的 Postman ,但我只需要在参数中传递的用户详细信息

pgccezyw

pgccezyw1#

这里,mongoDB find方法返回集合中的所有数据,而不管我们传递给它的参数是什么。相反,尝试使用findOne方法来处理该集合。因此,经过更正的代码如下所示:

router.get("/find/:userId", verifyTokenAndAuthorization, async (req, res) => {
  try {
    const cart = await Cart.findOne( 
    {userId : req.params.userId});
    console.log("parameter: "+req.params.userId)
     return res.status(200).json(cart);
  } catch (err) {
    res.status(500).json(err);
  }

您可以在MongoDB Manual阅读更多关于该方法的信息。

r7s23pms

r7s23pms2#

我已经找到了我的问题的解决方案,即我已经使用了过滤方法(res(200). json(cart. filter((user)=〉user. userId === req. params. userId))
这意味着
1.使用我的模型中的过滤方法UserId ===参数userId

router.get("/find/:userId", verifyTokenAndAuthorization, async (req, res) => {
  try {
    const cart = await Cart.find( 
    {userId : req.params.userId});
    console.log("parameter: "+req.params.userId)
      res.status(200).json(cart.filter((user)=>user.UserId === req.params.userId));
     console.log(cart.filter((user)=>user.UserId === req.params.userId))
  } catch (err) {
    res.status(500).json(err);
  }
}); ```

相关问题