我正在学习制作电子商务网站的课程,当我尝试注册用户时,我收到此错误:
讲师克隆了我的存储库并没有收到任何错误,但是每当我尝试注册或登录时都会收到错误消息。
我该如何解决这个问题?任何帮助将非常感激。也许我用来处理错误的 errorHandler 文件存在问题。
控制器/auth.js
const User = require('../models/user')
const jwt = require('jsonwebtoken') // to generate signed token
const expressJwt = require('express-jwt') // for authorization check
const { errorHandler } = require('../helpers/dbErrorHandler')
exports.signup = (req, res) => {
console.log("req.body", req.body)
// signs up new user
const user = new User(req.body)
user.save((err, user) => {
if(err) {
return res.status(400).json({
err: errorHandler(err)
})
}
user.salt = undefined
user.hashed_password = undefined
res.json({
user
})
})
}
exports.signin = (req, res) => {
// find user based on email
const { email, password } = req.body
User.findOne({email}, (err, user) => {
if (err || !user) {
return res.status(400).json({
error: 'User with that email does not exist.'
})
}
// if user is found, ensure email & password match
// create authenticate method in user model
if (!user.authenticate(password)) {
return res.status(401).json({
error: 'Email and password dont match'
})
}
// generate signed token with user id and secret
const token = jwt.sign({_id: user._id}, process.env.JWT_SECRET)
// persist token as 't' in cookie with expiry date
res.cookie('t', token, {expire: new Date() + 9999 })
// return response with user & token to frontend client
const {_id, name, email, role} = user
return res.json({token, user: {_id, email, name, role}})
})
}
exports.signout = (req, res) => {
res.clearCookie('t')
res.json({ message: "Signout success" })
}
exports.requireSignin = expressJwt({
secret: process.env.JWT_SECRET,
userProperty: 'auth'
})
exports.isAuth = (req, res, next) => {
let user = req.profile && req.auth && req.profile._id == req.auth._id
if(!user) {
return res.status(403).json({
error: "Access denied"
})
}
next()
}
exports.isAdmin = (req, res, next) => {
if (req.profile.role === 0) {
return res.status(403).json({
error: 'Admin resource! Access denied'
})
}
next()
}
Run Code Online (Sandbox Code Playgroud)
控制台中的错误消息:
throw new MongooseError('The `uri` parameter to `openUri()` must be a ' +
^
Error [MongooseError]: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |