我正在编写一个express端点,以便使用电子邮件从我的mongoDB数据库获取用户凭据,但是当我使用postman测试端点时,返回了一个404错误。
/**GET: http://localhost:9000/api/user/success123@gmail.com */ //url endpoint
export async function getUser(req, res){
const { email } = req.params;
try {
if(!email) return res.status(501).send({ error: "Invalid Username"})
UserModel.findOne({ email }, function(err, user){
if(err) return res.status(500).send({ err });
if(!user) return res.status(501).send({ error: "Couldn't Find User"});
return res.status(200).send(user)
})
} catch (error) {
return res.status(404).send({ error: "Cannot find user data"})
}
}
注:
1.电子邮件地址存在于我的mongoDBMap集中,我已经检查过了。
1.我在postman中使用GET方法
但我的 Postman 一直显示404错误'找不到用户数据'
我错过了什么?
2条答案
按热度按时间31moq8wy1#
我猜你需要考虑使用percent-encoding对电子邮件地址中的“@”符号进行编码,如下所示:
但是,我建议您将email作为body参数传递,而不是参数。
k97glaaz2#
mongoose
不再支持findOne()
中的回调函数。您可以将数据保存在变量中或使用.then()
,.catch()
块。下面是你的代码的解决方案的例子:
这里有一些你必须考虑的事情,
1.不要忘记在async函数中使用
await
关键字。1.尝试用Ecmascript编写代码
1.在
findOne()
中使用键值对。使用{ "email": email }
而不是{ email }
希望这能有所帮助!