从应用程序无法查询mongo数据库

时间:2015-06-25 00:23:58

标签: javascript node.js express mongoose

所以我使用Express和passport来创建一个应用程序。到目前为止一直很好,但我遇到的问题是当我尝试在我的mongo数据库中查找内容时。从mongodb我可以从控制台添加和查询数据库,但当我尝试从快递中添加或查询我有问题。如下所示,我有我的模型,然后在我的passport.js文件中要求它。当我User.findOne()时,它会为变量nulluser返回err。我不知道从哪里开始,因为我知道数据存在,我无法从我的应用程序中查询。

模型/ 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);
        });
    });
};

1 个答案:

答案 0 :(得分:0)

尝试使用

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

user._id 是mongodb中正确生成的ID。 !