gpt4 book ai didi

mysql - 本地护照与 mysql 不工作

转载 作者:行者123 更新时间:2023-11-29 12:08:21 25 4
gpt4 key购买 nike

我使用node.js、passport 和mysql 进行用户登录。我主要来源来自https://github.com/manjeshpv/node-express-passport-mysql/issues

我想在表中添加更多列。我从电子邮件字段开始并更改代码,如下所示。我只是在我认为需要的地方添加了电子邮件变量。我找不到崩溃的错误。无需修改任何内容,代码就可以工作。

passport.js:

passport.use(
'local-signup',
new LocalStrategy({
// by default, local strategy uses username and password, we will override with email
usernameField : 'username',
passwordField : 'password',
//emailField : 'email',
passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, username, password, email, done) {
// find a user whose email is the same as the forms email
// we are checking to see if the user trying to login already exists
connection.query("SELECT * FROM users WHERE username = ?",[username], function(err, rows) {
if (err)
log.info(err);
//return done(err);
if (rows.length) {
return done(null, false, req.flash('signupMessage', 'That username is already taken.'));
} else {
// if there is no user with that username
// create the user
var newUserMysql = {
username: username,
email: email,
password: bcrypt.hashSync(password, null, null) // use the generateHash function in our user model

};

var insertQuery = "INSERT INTO users ( username, password, email ) values (?,?,?)";
connection.query(insertQuery,[newUserMysql.username, newUserMysql.password, newUserMysql.email],function(err, rows) {
newUserMysql.id = rows.insertId;

return done(null, newUserMysql);
});
}
});
})
);

这里是日志:

The magic happens on port 8080
GET /signup 200 20ms - 1.21kb
D:\node-express-passport-mysql\node_modules\mysql\lib\protocol\Parser.js:82
throw err;
^
TypeError: undefined is not a function
at Object.SqlString.escape (D:\node-express-passport-mysql\node_modules\mysq
l\lib\protocol\SqlString.js:46:13)
at D:\node-express-passport-mysql\node_modules\mysql\lib\protocol\SqlString.
js:80:19
at String.replace (native)
at Object.SqlString.format (D:\node-express-passport-mysql\node_modules\mysq
l\lib\protocol\SqlString.js:71:14)
at Connection.format (D:\node-express-passport-mysql\node_modules\mysql\lib\
Connection.js:263:20)
at Connection.query (D:\node-express-passport-mysql\node_modules\mysql\lib\C
onnection.js:196:22)
at Query._callback (D:\node-express-passport-mysql\config\passport.js:71:32)

at Query.Sequence.end (D:\node-express-passport-mysql\node_modules\mysql\lib
\protocol\sequences\Sequence.js:96:24)
at Query._handleFinalResultPacket (D:\node-express-passport-mysql\node_modul
es\mysql\lib\protocol\sequences\Query.js:144:8)
at Query.EofPacket (D:\node-express-passport-mysql\node_modules\mysql\lib\pr
otocol\sequences\Query.js:128:8)
28 Jun 21:03:58 - [nodemon] app crashed - waiting for file changes before starti
ng...

最佳答案

这看起来是问题所在:

function(req, username, password, email, done) {

您添加了一个不应该存在的额外参数email。由于它破坏了 done 回调,因此当您的代码尝试调用它时,它将导致“未定义不是函数”错误。

如果您要传递额外的 email 属性,则可以通过 req.body.email 访问它(假设您使用的是 POST 登录路径)。

关于mysql - 本地护照与 mysql 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31103723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com