2012-12-31 221 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) {