Javascript 续集&;passport:TypeError:val.replace不是函数
我总是犯一个很奇怪的错误。 我曾试图修复它,但失败了。 在错误中,查询也没有正确记录。我真的不知道这里出了什么问题。 我的passport.js策略:Javascript 续集&;passport:TypeError:val.replace不是函数,javascript,mysql,node.js,passport.js,passport-local,Javascript,Mysql,Node.js,Passport.js,Passport Local,我总是犯一个很奇怪的错误。 我曾试图修复它,但失败了。 在错误中,查询也没有正确记录。我真的不知道这里出了什么问题。 我的passport.js策略: var LocalStrategy = require('passport-local').Strategy; var sequelize = require('sequelize'); var sequelize = new sequelize('database', 'user', 'password'); var mysql = req
var LocalStrategy = require('passport-local').Strategy;
var sequelize = require('sequelize');
var sequelize = new sequelize('database', 'user', 'password');
var mysql = require('mysql');
var connection = mysql.createConnection({
database: 'kitsune',
host: 'localhost',
user: 'root',
password: 'root'
});
connection.query('USE kitsune');
module.exports = function(passport) {
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
connection.query("select * from penguins where id = " + id, function(err, rows) {
done(err, rows[0]);
});
});
passport.deserializeUser(function(id, done) {
connection.query("select * from penguins where username = " + username, function(err, rows) {
done(err, rows[0]);
});
})
passport.use('local-signup', new LocalStrategy({
penguinUsername: 'username',
emailField: 'email',
passwordField: 'password',
passReqToCallback: true
},
function(req, username, email, password, done) {
connection.query("select * from penguins where email = '" + email + "'", function(err, rows) {
connection.query("select * from penguins where username = '" + username + "'", function(err, rows) {
console.log(rows);
console.log("above row object");
if (err) return done(err);
if (rows.length) {
return done(null, false, req.flash('signupMessage', 'That email / username is already taken.'));
} else {
var newUserMysql = new Object();
newUserMysql.username = username;
newUserMysql.email = email;
newUserMysql.password = password;
sequelize.query('INSERT INTO penguins (username, email, password) VALUES (?, ?, MD5(?))',
{ replacements: [username, email, password], type: sequelize.QueryTypes.INSERT }
).then(rows => {
console.log(sequelize.query);
connection.query(sequelize.query, function(err, rows) {
newUserMysql.id = rows.insertId;
return done(null, newUserMysql);
})
});
}
});
});
}));
passport.use('local-login', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},
function(req, email, password, done) {
connection.query("SELECT * FROM `penguins` WHERE `email` = '" + email + "'", function(err, rows) {
if (err) return done(err);
if (!rows.length) {
return done(null, false, req.flash('loginMessage', 'No user found.'));
}
if (!(rows[0].password == password)) return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.'));
return done(null, rows[0]);
});
}));
};
产生错误的代码片段:
var newUserMysql = new Object();
newUserMysql.username = username;
newUserMysql.email = email;
newUserMysql.password = password;
sequelize.query('INSERT INTO penguins (username, email, password) VALUES (?, ?, MD5(?))',
{ replacements: [username, email, password], type: sequelize.QueryTypes.INSERT }
).then(rows => {
console.log(sequelize.query);
connection.query(sequelize.query, function(err, rows) {
newUserMysql.id = rows.insertId;
return done(null, newUserMysql);
})
});
}
});
});
}));
错误如下:
C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master>node server.js
Site is live
Nice! Database looks fine
[]
above row object
C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\mysql\lib\protocol\Parser.js:79
throw err; // Rethrow non-MySQL errors
^
TypeError: val.replace is not a function
at Object.SqlString.escape (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\sequelize\lib\sql-string.js:63:15)
at C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\sequelize\lib\sql-string.js:86:22
at String.replace (<anonymous>)
at Object.SqlString.format (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\sequelize\lib\sql-string.js:81:14)
at Object.format (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\sequelize\lib\utils.js:84:22)
at Sequelize.query (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\sequelize\lib\sequelize.js:792:19)
at Query._callback (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\app\config\passport\passport.js:71:27)
at Query.Sequence.end (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\mysql\lib\protocol\sequences\Sequence.js:86:24)
at Query._handleFinalResultPacket (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\mysql\lib\protocol\sequences\Query.js:137:8)
at Query.EofPacket (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\mysql\lib\protocol\sequences\Query.js:121:8)
at Protocol._parsePacket (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\mysql\lib\protocol\Protocol.js:280:23)
at Parser.write (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\mysql\lib\protocol\Parser.js:75:12)
at Protocol.write (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\mysql\lib\protocol\Protocol.js:39:16)
at Socket.<anonymous> (C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master\node_modules\mysql\lib\Connection.js:103:28)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
C:\Users\Daan\Downloads\using-passport-with-sequelize-and-mysql-master\using-passport-with-sequelize-and-mysql-master>
C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master>node server.js
网站是活的
美好的数据库看起来不错
[]
行上对象
C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\node\u modules\mysql\lib\protocol\Parser.js:79
抛出错误;//重新显示非MySQL错误
^
TypeError:val.replace不是函数
在Object.SqlString.escape(C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\node\u modules\sequelize\lib\sql string.js:63:15)
在C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\node\u modules\sequelize\lib\sql string.js:86:22
在String.replace()处
在Object.SqlString.format(C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\node\u modules\sequelize\lib\sql string.js:81:14)
在Object.format(C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\node\u modules\sequelize\lib\utils.js:84:22)
在Sequelize.query(C:\Users\Daan\Downloads\using passport with Sequelize和mysql master\using passport with Sequelize和mysql master\node\u modules\Sequelize\lib\Sequelize.js:792:19)
在查询时。\回调(C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\app\config\passport\passport.js:71:27)
在Query.Sequence.end(C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\node\u modules\mysql\lib\protocol\sequences\Sequence.js:86:24)
在查询时。\u handleFinalResultPacket(C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\node\u modules\mysql\lib\protocol\sequences\Query.js:137:8)
在Query.EofPacket(C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\node\u modules\mysql\lib\protocol\sequences\Query.js:121:8)
at Protocol.\u parsePacket(C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\node\u modules\mysql\lib\Protocol\Protocol.js:280:23)
在Parser.write(C:\Users\Daan\Downloads\使用带有sequelize的passport和mysql master\使用带有sequelize的passport和mysql master\node\u modules\mysql\lib\protocol\Parser.js:75:12)
在Protocol.write(C:\Users\Daan\Downloads\使用带有sequelize的passport和mysql master\使用带有sequelize的passport和mysql master\node\u modules\mysql\lib\Protocol\Protocol.js:39:16)
在插座上。(C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master\node\u modules\mysql\lib\Connection.js:103:28)
在emitOne(events.js:115:13)
在Socket.emit(events.js:210:7)
C:\Users\Daan\Downloads\using passport with sequelize和mysql master\using passport with sequelize和mysql master>
我真的需要知道这个问题。为什么不使用Sequelize内置方法插入行?我想问题出在你的问题上。你真的能用sequelize.query()执行插入操作吗?@frankstifler我设法解决了它,但还有另一个问题。我问了一个问题。@JavaSherwood你是怎么解决的?