2012-12-31 71 views
1
app.get('/showme', function (req, res){ 

    console.log(req.session.user); 

    UserModel.findOne({ user: req.session.user }, function (err, user){ 

    if (err) throw err; 

     console.log(user); 
     res.send('Look'); 

    }); 

}); 

执行此操作时,我在终端中正确接收到用户,但之后,突然应用程序崩溃了,这是错误TypeError: Cannot read property '_id' of nullreq.session.user被定义,并在应用程序中。这不是第一次调用UserModel.findOne({ user: req.session.user },而是唯一一个返回此错误的人!为什么会发生?猫鼬的奇怪错误

编辑:

这是用户的模式

var userschema = new mongoose.Schema({ 

    user: String, 
    pass: String, 
    mail: String, 
    avatar: String, 

}); 

编辑:

我不知道为什么,但我不UserModel.find()得到任何错误。它只发生在UserModel.findOne()

编辑:

app.get('/showme', function (req, res){ 

    UserModel.find({ user: req.session.user }, function (err, user){ 

    for (var i = 0; i <= user[0].following.length; i++) { 

     UserModel.find({ _id: user[0].following[i] }, function (err, users){ 

       var userss = []; 
       users[i] = users[i]; 
       console.log(users); 

     }); 

    } 

}); 

res.send('Hello'); 

}); 

而且在这段代码中,第一次UserModel不返回任何错误,但第二个呢! 这是我在终端接收:

[ { __v: 2, 
    _id: 50e1d852d7b6f9e1be000003, 
    avatar: './users/rodridev/full_Mgs-solid-snake.jpg', 
    user: 'rodridev', 
    notification: [], 
    followers: [ '50e1cfda6e63107eb6000003' ], 
    following: [ '50e1cfda6e63107eb6000003' ], 
    , 
    , 
    undefined ] 
    [ , , , undefined ] 
    [ { __v: 1, 
    _id: 50e214171553600000000003, 
    avatar: './users/kirbo/8816.masterchief.jpg-610x0.jpg', 
    user: 'kirbo', 
    followers: [ '50e1cfda6e63107eb6000003' ], 
    following: [], 
    imagen: [] }, 
, 
, 
undefined ] 

这是出现下跌这个错误。和以前一样:TypeError: Cannot read property '_id' of null

+0

这将有助于了解'UserModel'架构是如何定义和req.session.user'的'价值。 – JohnnyHK

+0

我只在会话中存储用户标识,而不是整个用户对象。 – chovy

回答

1

尝试

UserModel.findOne({ _id: req.session.user._id }, function (err, user) { 

的问题是,你所要求的谁有一个叫做财产user,其值是当前用户的用户。你真正想要的(我假设)是当前会话用户的数据库中的用户项目。

或者,甚至更好,是我喜欢做的

UserModel.findById(req.session.user._id, function (err, user) {