我正在做一个电子商务网站的项目。这里我有一个问题。
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 ,但我只需要在参数中传递的用户详细信息
2条答案
按热度按时间pgccezyw1#
这里,mongoDB
find
方法返回集合中的所有数据,而不管我们传递给它的参数是什么。相反,尝试使用findOne
方法来处理该集合。因此,经过更正的代码如下所示:您可以在MongoDB Manual阅读更多关于该方法的信息。
r7s23pms2#
我已经找到了我的问题的解决方案,即我已经使用了过滤方法(res(200). json(cart. filter((user)=〉user. userId === req. params. userId))
这意味着
1.使用我的模型中的过滤方法UserId ===参数userId