Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 你能帮我照看一下那个schenario吗_Node.js_Reactjs_Authentication - Fatal编程技术网

Node.js 你能帮我照看一下那个schenario吗

Node.js 你能帮我照看一下那个schenario吗,node.js,reactjs,authentication,Node.js,Reactjs,Authentication,从尝试新事物的想法来看,我的项目有两个角色。所以我在数据库中创建了一个表“clinicid”,其中包含staffid和doctorid属性。当有人登记的时候。此人需要在clinicid集合中输入与staffid或doctorid相等的代码。如果该代码与医生id匹配,则应打开医生仪表板和员工仪表板,然后打开员工仪表板。 我正在用mongodb和前端做节点js。我只需要一个代码来帮助我解决这个问题。请兄弟,这将是非常优雅的。非常感谢。 下面是我在NodeJS中注册和登录的代码。 简而言之,当用户尝试

从尝试新事物的想法来看,我的项目有两个角色。所以我在数据库中创建了一个表“clinicid”,其中包含staffid和doctorid属性。当有人登记的时候。此人需要在clinicid集合中输入与staffid或doctorid相等的代码。如果该代码与医生id匹配,则应打开医生仪表板和员工仪表板,然后打开员工仪表板。 我正在用mongodb和前端做节点js。我只需要一个代码来帮助我解决这个问题。请兄弟,这将是非常优雅的。非常感谢。 下面是我在NodeJS中注册和登录的代码。 简而言之,当用户尝试使用用户名、密码和代码注册时。该代码应与具有staffid或docid的clinic id的数据库集合相匹配。如果我做错了,你能给我一些不同的建议吗

router.post('/register' ,( req,res,next)=>{
let {username,password,code}= req.body;





User.find({ username})
.then(user =>{
    if(!user){
        throw new Error('User already exist');
    }

bcrypt.hash(password,10, (err,hash)=>{
    if (err)  return next(err);
    User.create({username, password: hash,code})
    .then(user =>{
        res.json({status:"Signup success"});
    }).catch(next);
})


   
}).catch(function(err){
    next(err)
}
);
});
router.post('/login',(req,res,next)=>{
    const  {username, password,} = req.body;
User.findOne({username})
.then((user)=>{
    if(!user){
        let err = new Error('User  does not exist');
        err.status=400;
        return next(err);
    }
    bcrypt.compare(password, user.password)
    .then((isMatched)=>{
        if (!isMatched){
            let err = Error('Password doesnot match');
            err.status=400;
            return next(err);
        }
        const payload ={
            id:user.id,
            username:user.username,
            role:user.role
        }
        jwt.sign(payload, process.env.SECRET,{expiresIn: '3hr'},(err, token)=>{
            if (err) return  next(err);
                        res.json({message:'Login successfull', token});
        })
    })
}).catch(next);
})