注册时总是因为genPassword和escape函数报500的错误

来源:10-12 开发路由

hpbrave

2021-06-19

我试了很多回,只要把有escape和genPassword的那三行注释掉就完全没问题,但是在login那个函数中,这两个函数是可以正常工作的啊。不知道是什么原因。
我看以前有个同学提出过一模一样的问题,但是没有得到答案。能不能请老师这次看一看呢?非常非常感谢。
这是我的代码:
const registerUser = (req) => {
const {
username,
password,
email
} = req.body

username = escape(username)
password = genPassword(password)
password = escape(password)

const sql = `
    insert into users (username, password, game, email) 
    values (${username}, ${password}, '${game}', '${email}');
`
return exec(sql).then(insertData => {
    return{
        id:insertData.insertId
    }       
})

}
node端只有500这个简单的报错信息,头两行应该是无关的,每次都出现的。
图片描述

找到一种解决办法了:
见上面代码,以前是直接给controller/user.js传入req,现在变为分别传入req.body中的变量,就可以解决这个500的问题,让escape和genPassword函数都能正常运行。
const registerUser = (username, password, email) => {
username = escape(username)
password = genPassword(password)
password = escape(password)
const sql = insert into users (username, password email) values (${username}, ${password}, '${email}');
return exec(sql).then(insertData => {
return{
id:insertData.insertId
}
})
}
希望能对后面遇到同样问题的同学有帮助。
至于为什么这两种传参方法会不同我也不清楚,我把两种的username都输出来看了,从node.js的控制台中没有看出任何区别。

写回答

2回答

双越

2021-06-20

看你截图,只有一个 500 ,没有详细的报错信息,比较怪异。

我建议你先不要管这三行代码了,先保证程序正常运行,继续往下学习。学完之后再回头看这个问题。

0
5
双越
回复
hpbrave
好的,很赞!
2021-06-22
共5条回复

双越

2021-06-20

nodejs 的详细报错信息,贴图给我吧。

0
1
hpbrave
我把图贴到上面了,因为回复这里好像不能贴。就只有简单的500报错,上面两行是每次都出现的,应该和注册无关。非常感谢。
2021-06-20
共1条回复

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4124 学习 · 2022 问题

查看课程