Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 续集&;passport:TypeError:val.replace不是函数_Javascript_Mysql_Node.js_Passport.js_Passport Local - Fatal编程技术网

Javascript 续集&;passport:TypeError:val.replace不是函数

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

我总是犯一个很奇怪的错误。 我曾试图修复它,但失败了。 在错误中,查询也没有正确记录。我真的不知道这里出了什么问题。 我的passport.js策略:

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你是怎么解决的?