2017-01-29 3 views
0
passport.use('local-signup', new LocalStrategy({ 
    // by default, local strategy uses username and password, we will override with email 
    usernameField : 'email', 
    passwordField : 'password', 
    passReqToCallback : true // allows us to pass back the entire request to the callback 
}, 
(req, email, password, done) => { 
    // asynchronous 
    // User.findOne wont fire unless data is sent back 
    process.nextTick(() => { 

    // 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 
    User.findOne({ 'email' : email },function(err, user){ 
     // if there are any errors, return the error 

     if (err) 
      return done(err); 

     // check to see if theres already a user with that email 
     if (user) { 
      return done(null, false, {'errorMessages': 'That email is already taken.'}); 
     } else { 

      // if there is no user with that email 
      // create the user 
      let newUser   = new User(); 

      // set the user's local credentials 
      newUser.name  = req.body.fullname; 
      //newUser.email   = email; 
      newUser.password  = newUser.generateHash(password); 


      // save the user 
      newUser.save((err)=>{ 
       if (err) 
        return done(err); 
       return done(null, newUser); 
      }); 
     } 
    });  
    }); 
})); 

Приведенный выше код находится в узле js с использованием аутентификации паспорта js, а код локального входа не работает.User.findOne() не является функцией

В приведенном выше коде, я получаю сообщение об ошибке:

User.findOne() is not a function.

Моя схема все в порядке ... Пожалуйста, помогите

+1

как мы должны знать, что 'User' это? –

ответ

2

Вам нужно (если вы еще не) создать экземпляр данных с model как

var UserDetails = mongoose.model('userInfo', UserDetail); 

Теперь вы должны быть в состоянии для использования .findOne здесь.

И убедитесь, что вы определяете структуру для вашей даты внутри коллекции как ..

var Schema = mongoose.Schema; 
var UserDetail = new Schema({ 
    username: String, 
    password: String 
}, { 
    collection: 'userInfo' 
}); 
Смежные вопросы