2015-06-25 83 views
0

所以我使用Express和護照來創建應用程序。到目前爲止這麼好,但我遇到的問題是當我嘗試在我的mongo數據庫中查找某些東西時。從mongodb我可以添加和從控制檯查詢數據庫,但是當我嘗試從express中添加或查詢時,我遇到了問題。正如您在下面看到的,我有我的模型,然後在我的passport.js文件中需要它。當我做User.findOne()時,它返回null變量usererr。我不確定該從哪裏出發,因爲我知道數據在那裏,我無法從我的應用程序中查詢它。查詢應用程序不工作的mongo數據庫

型號/ user.js的

var mongoose = require('mongoose'); 

var Schema = mongoose.Schema; 
var userSchema = new Schema({ 
    local: { 
     username: String, 
     password: String 
    } 
}); 

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

passport.js

var LocalStrategy = require('passport-local').Strategy; 
var User = require('./models/user.js'); 

module.exports = function (passport) { 
    passport.use('local-registration', new LocalStrategy({ 
     usernameField: 'username', 
     passwordField: 'password' 
    }, function(username, password, done) { 
     console.log('credentials', username, password); 
     User.findOne({ 'local.username' : username }, function(err, user) { 
      console.log(user,err); 
     }); 
     done(); 
    })); 

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

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

嘗試將'done()'移動到'User.findOne'回調中。例如,在'console.log(user,err)'之後。 –

+0

所以,我這樣做,並得到這個作爲我的輸出http://i.imgur.com/QyDh7fe.png –

+0

看起來它現在正在工作(控制檯正在記錄'null爲用戶和'空'錯誤)。在回調函數完成之前,您正在調用'done()'。 –

回答

0

嘗試使用

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

user._id是MongoDB中正確生成的ID。 !

相關問題