我在Node.js和Express中构建了auth应用程序。现在,我正在编写后端。 我使用MongoDB数据库。
我使用后查询来登录带有下一个JSON数据的页面。
存在错误-电子邮件字段必须位于双引号中,但我希望服务器不会崩溃,并以错误答复我
我将body-parser包与下一个代码一起使用
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
我有下一个功能:
const bcrypt = require('bcryptjs')
const User = require('../model/User')
const authHelper = require('../helpers/authHelper')
const config = require('../config')
module.exports = async (req, res) => {
try {
const {
email,
password
} = req.body
if(!(email || password)) {
throw new Error('Enter the properties correctly')
}
const user = await User.findOne({
email
})
if (!user) return res.status(400).json({
message: 'Email or password is wrong'
})
const validPass = await bcrypt.compare(password, user.password)
if (!validPass) return res.status(400).json({
message: "Email is not found"
})
const accessToken = authHelper.generateAccessToken(user._id).token
const refreshToken = authHelper.generateRefreshToken(user._id).token
// res.set({
// "access-token": accessToken.token,
// "refresh-token": refreshToken.token,
// })
return res.json({
"accessToken": accessToken,
"refreshToken": refreshToken,
})
} catch (e) {
return res.json({
msg: e.message
})
}
}
这是查询
{
email: "test@test.com",
"password": "test"
}
错误消息:
SyntaxError: Unexpected token e in JSON at position 3
at JSON.parse (<anonymous>)
at parse (R:\Projects\jwt-auth\node_modules\body-parser\lib\types\json.js:89:19)
at R:\Projects\jwt-auth\node_modules\body-parser\lib\read.js:121:18
at invokeCallback (R:\Projects\jwt-auth\node_modules\raw-body\index.js:224:16)
at done (R:\Projects\jwt-auth\node_modules\raw-body\index.js:213:7)
at IncomingMessage.onEnd (R:\Projects\jwt-auth\node_modules\raw-body\index.js:273:7)
at IncomingMessage.emit (events.js:203:15)
at endReadableNT (_stream_readable.js:1145:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
答案 0 :(得分:0)
尝试修复电子邮件密钥:
{
"email": "test@test.com",
"password": "test"
}
JSON对象密钥必须在双行之间。
答案 1 :(得分:0)
可能问题在于此结构:
const {
email,
password
} = req.body
尝试:
const email = req.body.email;
const password = req.body.password;