Node.js 想要在使用mongoose的节点js中找到使用user_id的用户吗
想要在使用nodejs的mongoose和nodejs的节点js中找到使用user_id的用户。提交时显示用户不存在Node.js 想要在使用mongoose的节点js中找到使用user_id的用户吗,node.js,Node.js,想要在使用nodejs的mongoose和nodejs的节点js中找到使用user_id的用户。提交时显示用户不存在 Route.get("/getdata",(req,res)=>{ const { firstname,lastname,username}=req.body; const user = User.findOne({firstname,lastname,username});
Route.get("/getdata",(req,res)=>{
const { firstname,lastname,username}=req.body;
const user = User.findOne({firstname,lastname,username});
if(user===user._id){
res.status(200).json(user);
console.log(user);
}
else{
res.status(401).json("user not registered");
console.log("user is not registered");
}
});
index.ejs
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<p>Hello world</p>
<h1>Welcome to page </h1>
<form action="/register/getdata" method="GET">
<input type="text" name="userid" placeholder="enter user id">
<button type="submit">click</button>
</form>
</body>
</html>
欢迎
你好,世界
欢迎来到第页
点击
您需要了解异步、承诺、回调、异步等待来修复它
Route.get("/getdata",async (req,res)=>{
const { firstname,lastname,username}=req.body;
const user = await User.findOne({firstname,lastname,username});
if(user===user._id){
res.status(200).json(user);
console.log(user);
}
else{
res.status(401).json("user not registered");
console.log("user is not registered");
}
});
您可以通过两种方式获取数据 回调方法
User.findOne(filter, (err, doc){
if(err) {
//handle error and return.
}
//proceed with result.
});
使用内置承诺
User.findOne(filter)
.then(result=>{
//proceed with result.
})
.catch(err=>{
//handle error
})
或异步/等待
要使用wait,必须使函数异步
Router.get('/getdata', async(req, res, next){
try{
const user = await User.findOne(filter);
//proceed with result.
}
catch(err){
//handle error
}
})
----------
你的代码需要一些修改,所以我发布更新的代码
Route.get("/getdata", async(req,res)=>{
try{
const {firstname, lastname, username} = req.body;
const user = await User.findOne({firstname, lastname, username});
if(user){
res.status(200).json(user);
console.log(user);
}else{
res.status(401).json("user not registered");
console.log("user is not registered");
}
}catch(err){
console.log(err);
//handle error
}
});
您不需要显式验证
user===user.id
(我不知道您使用的目的是什么,因为它是错误的,对象不能等于它的属性),因为您使用的是findOne()
,所以只有在找到匹配项时,它才会给出结果,否则为null。使用异步函数时,请始终将代码包装在try-catch块中。否则,如果出现错误,应用程序将崩溃。无需检查user===user.id
如果findOne()
返回一些值,则用户已存在,否则不存在。