Node.js-不是函数

乔伦·波弗利特(Joren Polfliet)

我在Node.js中写一个登录名。它曾经可以正常工作,但是现在我试图添加一个字段,但它停止了工作,我不知道为什么。我正在使用Passport.js进行身份验证。

奇怪的是,它确实将用户添加到了数据库中,但是却切换了字段。名称是密码等。

我得到的错误如下:

C:\ Users *** \ Documents \ GitHub \ Query \ config \ passport.js:33返回完成(null,false,req.flash('signupMessage','Je email bestaat al。')); ^

TypeError:done不是Query的函数。(C:\ Users *** \ Documents \ GitHub \ Query \ config \ passport.js:33:28)

护照

var LocalStrategy = require('passport-local').Strategy;
var FacebookStrategy = require('passport-facebook').Strategy;
var User = require('../models/login.js');
var configAuth = require('./auth');

module.exports = function (passport) {

    passport.serializeUser(function (user, done) {
        done(null, user.id);
    });

    passport.deserializeUser(function (id, done) {
        User.findById(id, function (err, user) {
            done(err, user);
        });
    });

    passport.use('local-signup', new LocalStrategy({
            nameField: 'name',
            usernameField: 'email',
            passwordField: 'password',
            passReqToCallback: true
        },
        function (req, name, email, password, done) {

            User.findOne({
                'local.email': email
            }, function (err, user) {

                if (err)
                    return done(err);
                if (user) {
                    return done(null, false, req.flash('signupMessage', 'Je email bestaat al.'));
                } else {

                    var newUser = new User();

                    newUser.local.name = name;
                    newUser.local.email = email;
                    newUser.local.password = newUser.generateHash(password);

                    newUser.save(function (err) {
                        if (err)
                            throw err;
                        return done(null, newUser);
                    });
                }

            });

        }));

    passport.use('local-login', new LocalStrategy({
            usernameField: 'email',
            passwordField: 'password',
            passReqToCallback: true
        },
        function (req, name, email, password, done) {
            User.findOne({
                'local.email': email
            }, function (err, user) {
                if (err)
                    return done(err);
                if (!user)
                    return done(null, false, req.flash('loginMessage', 'De gebruiker bestaat niet. Maak een account!'));
                if (!user.validPassword(password))
                    return done(null, false, req.flash('loginMessage', 'Wachtwoord is verkeerd. Probeer het opnieuw!'));
                return done(null, user);
            });

        }));

登录模型

var mongoose = require('mongoose'); var bcrypt   = require('bcrypt-nodejs');

var userSchema = mongoose.Schema({

    local            : {
        name         : String,
        email        : String,
        password     : String,
    },
    facebook         : {
        id           : String,
        token        : String,
        email        : String,
        name         : String
    } });

userSchema.methods.generateHash = function(password) {
    return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); };

userSchema.methods.validPassword = function(password) {
    return bcrypt.compareSync(password, this.local.password); };

module.exports = mongoose.model('User', userSchema);

路线

module.exports = function (app, passport) {
    app.get('/', function (req, res) {
        res.render('login.ejs', {
            message: req.flash('loginMessage')
        });
    });

    app.get('/register', function (req, res) {
        res.render('index.ejs', {
            message: req.flash('signupMessage')
        });
    });

    app.post('/', passport.authenticate('local-login', {
        successRedirect: '/topic',
        failureRedirect: '/',
        failureFlash: true
    }));

    app.post('/register', passport.authenticate('local-signup', {
        successRedirect: '/topic',
        failureRedirect: '/register',
        failureFlash: true
    }));

};

构成视图的一部分

 <form action="/register" method="post">
                        <div class="form-group">
                            <input type="text" placeholder="Name" class="form-control nameForm" name="name">
                        </div>
                        <!-- END FORM GROUP -->
                        <div class="form-group">
                            <input type="text" placeholder="Email" class="form-control emailForm" name="email">
                        </div>
                        <!-- END FORM GROUP -->
                        <div class="form-group">
                            <input type="password" placeholder="Password" class="form-control" name="password">
                        </div>
                        <!-- END FORM GRROUP -->
                        <button type="submit" class="btn btn-primary btn-default">Registeer</button>
                    </form>
罗伯特克莱普

的验证回调签名LocalStrategy不正确:

passport.use('local-signup', new LocalStrategy({
        nameField: 'name',
        usernameField: 'email',
        passwordField: 'password',
        passReqToCallback: true
    }, function (req, name, email, password, done) { ... })

正确的签名:

function(req, email, password, done) { ... }

(无name参数)

这也解释了为什么领域似乎发生了变化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js-不是函数

来自分类Dev

Node.js:TypeError:对象不是函数

来自分类Dev

TypeError:对象不是Node.js函数

来自分类Dev

Node js app.configure不是函数

来自分类Dev

Node.js返回不是函数

来自分类Dev

Node.js:对象不是函数

来自分类Dev

TypeError:undefined不是Node JS函数

来自分类Dev

node.js扩展foo不是函数

来自分类Dev

Connect 不是 Node.js 的函数

来自分类Dev

typeerror undefined 不是 node js 中的函数

来自分类Dev

Firebase Node.js 则不是函数

来自分类Dev

Node.js异步并行“ TypeError:任务不是函数”

来自分类Dev

node.js i18n .__不是函数

来自分类Dev

Firebase 3.3.x Node.js-createUserWithEmailAndPassword不是函数

来自分类Dev

TypeError:promise.then(...)。then(...)。then(...)。then(...)。catch不是Node Js中的函数

来自分类Dev

res.sendFile不是Node.js函数

来自分类Dev

TypeError:不是Node和Express JS的构造函数

来自分类Dev

Three.js node.applyMatrix4不是函数

来自分类Dev

SharedKeyCredential不是构造函数-Azure Blob存储+ Node.js

来自分类Dev

TypeError:回调不是Node.js中的函数

来自分类Dev

node.js抛出“ Buffer.alloc不是函数”错误

来自分类Dev

Node.js TypeError:未定义不是函数

来自分类Dev

TypeError:undefined不是Node.js中的函数

来自分类Dev

TypeError:undefined不是Node.js中管道的函数

来自分类Dev

TypeError:对象不是Node JS / socket.io中的函数

来自分类Dev

Node.js:bmfont2json 不是函数?

来自分类Dev

TypeError:count 不是 node.js 和 sequelize 中的函数

来自分类Dev

为什么在 node.js 中 `func` 不是函数?

来自分类Dev

TypeError:[函数名]不是函数,在mongoose和node.js中

Related 相关文章

热门标签

归档