Javascript nodejs中的登录系统
我是node.js的新手,我正在构建一个用户登录系统,但我遇到了一个错误 作为 注册新用户时出现此错误 MongoDB连接Javascript nodejs中的登录系统,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我是node.js的新手,我正在构建一个用户登录系统,但我遇到了一个错误 作为 注册新用户时出现此错误 MongoDB连接 (node:12592) UnhandledPromiseRejectionWarning: TypeError: user is not a constructor at User.findOne.then.user (C:\Users\AKASH TOMAR\Desktop\miniproject\routes\users.js:59:35) at pr
(node:12592) UnhandledPromiseRejectionWarning: TypeError: user is not a constructor
at User.findOne.then.user (C:\Users\AKASH TOMAR\Desktop\miniproject\routes\users.js:59:35)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:12592) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:12592) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:12592) UnhandledPromiseRejectionWarning: TypeError: user is not a constructor
at User.findOne.then.user (C:\Users\AKASH TOMAR\Desktop\miniproject\routes\users.js:59:35)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:12592) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
我并没有犯错误,请帮助我,因为明天我必须在我的学院里展示,我已经对我的代码进行了注释,以获得正确的地位
const express = require('express');
const router = express.Router();
const bcrypt = require('bcryptjs');
//User model
const User = require('../models/User');
//Login page
router.get('/login',(req,res)=>res.render('login'));
//register page
router.get('/register',(req,res)=>res.render('register'));
//Register Hnadle
router.post('/register',(req,res)=>{
const {name,email,password,password2 } = req.body;
let errors = [];
//check required fields
if(!name || !email || !password || !password2){
errors.push({msg: 'Please fill in all fields'});
}
//check passwords match
if(password !== password2){
errors.push({msg: 'Passwords do not match'});
}
//check password length
if(password.length < 6){
errors.push({msg:'Password should be at least 6 chracters'});
}
if(errors.length>0){
res.render('register',{
errors,
name,
email,
password,
password2
});
}else{
//validation passed
User.findOne({email: email})
.then(user => {
if(user){
//user exists
errors.push({msg: 'Email is already registered'});
res.render('register',{
errors,
name,
email,
password,
password2
});
}else {
const newUser = new user({
name,
email,
password
});
//hash password
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(newUser.password, salt, (err, hash) => {
if (err) throw err;
newUser.password = hash;
newUser
.save()
.then(user => {
req.flash(
'success_msg',
'You are now registered and can log in'
);
res.redirect('/users/login');
})
.catch(err => console.log(err));
});
});
}
});
}
});
module.exports = router;
const express=require('express');
const router=express.router();
const bcrypt=require('bcryptjs');
//用户模型
const User=require('../models/User');
//登录页面
router.get('/login',(req,res)=>res.render('login');
//注册页
router.get('/register',(req,res)=>res.render('register');
//寄存器Hnadle
路由器.post('/register',(req,res)=>{
const{name,email,password2}=req.body;
让错误=[];
//检查必填字段
如果(!name | | |!email | |!password | |!password2){
错误。推送({msg:'请填写所有字段'});
}
//检查密码是否匹配
如果(密码!==密码2){
错误。推送({msg:'密码不匹配'});
}
//检查密码长度
如果(密码长度<6){
错误。推送({msg:'密码应至少为6个字符');
}
如果(错误。长度>0){
res.render('寄存器'{
错误,
名称
电子邮件,
密码,
密码2
});
}否则{
//通过验证
User.findOne({email:email})
。然后(用户=>{
如果(用户){
//用户存在
错误。推送({msg:'电子邮件已注册'});
res.render('寄存器'{
错误,
名称
电子邮件,
密码,
密码2
});
}否则{
const newUser=新用户({
名称
电子邮件,
密码
});
//散列密码
bcrypt.genSalt(10,(错误,盐)=>{
bcrypt.hash(newUser.password,salt,(err,hash)=>{
如果(错误)抛出错误;
newUser.password=hash;
新用户
.save()
。然后(用户=>{
要求闪光(
“成功消息”,
'您现在已注册,可以登录'
);
res.redirect('/users/login');
})
.catch(err=>console.log(err));
});
});
}
});
}
});
module.exports=路由器;
您的代码显示
const newUser = new user({
但是在这个上下文中,用户
是您的承诺的变量然后
。您需要User
,这是您的mongo类