带有猫鼬的Node.js电子邮件验证

时间:2018-08-02 14:32:51

标签: node.js npm mongoose email-verification

我正在研究Node.js以及使用护照和猫鼬进行电子邮件验证。 现在,我正在测试代码,但出现错误,但无法修复。 这是我的问题和下面发布的代码:

我有我的app.js

var nev = require('email-verification')(mongoose);
require('./routes/db/email-verification')(nev);
require('./routes/db/passport')(passport,nev);

我的email-verificaiton.js

var User = require('./ModelUser');


module.exports = function(nev){
    nev.configure({
        ...
        ...
    },function(err,options){
            if(err)
                return err;
            console.log('test');
        });

    nev.generateTempUserModel(User,function(err,tempUserModel){
        if(err){
            return err;
        }

        console.log('checked');
});


};

我的passport.js

module.exports = function (passport, nev) {

...
...

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



        var newUser = new User();

        newUser.email = email;
        newUser.password = password;

        nev.createTempUser(newUser, function( err, existingPersistentUser, newTempUser){
            if(err) console.error(err);

            if(existingPersistentUser){
                console.log('E-mail already exists');
                return done(null, false, req.flash('signupMessage', 'E-mail already exists'));
            }
            if(newTempUser){
                var URL = newTempUser[nev.options.URLFieldName];

                nev.sendVerificationEmail(email, URL, function(err, info){

                if(err) console.error(err);
                    console.log('An email has been sent to you. Please check it to verify your account.');
                    return done(null);
                    })
                } else{
                    console.log('You have already signed up. Please check your email to verify your account.');
                    return done(null);
                }
            })

我收到错误TypeError:无法读取未定义的属性'createTempUser' 我不知道为什么我的password.js中的“ nev”变量未定义。 请问有人可以帮助我吗?这很难。

1 个答案:

答案 0 :(得分:0)

email-verificaiton.js中,将其更改为类似于以下内容:

function verification(nev) {
    nev.configure({
        ...
        ...
    },function(err,options){
            if(err)
                return err;
            console.log('test');
        });

    nev.generateTempUserModel(User,function(err,tempUserModel){
        if(err){
            return err;
        }

        console.log('checked');
});


};

module.exports = {verification}

然后在app.js中可以更改

var nev = require('email-verification')(mongoose);

成为

var nev = require('email-verification').verification(mongoose);