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 nullです。が定義されreq.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');

});

このコードでは、1 回目UserModelはエラーを返しませんが、2 回目はエラーを返します。これは私が端末で受け取ったものです:

[ { __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

4

1 に答える 1

1

試す

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

user問題は、値が現在のユーザーであるというプロパティを持つユーザーを求めていることです。本当に必要なのは(私が思うに)、現在のセッションユーザーであるデータベースのユーザーアイテムです。

あるいは、さらに良いのは、私がやりたいことです

UserModel.findById(req.session.user._id, function (err, user) {
于 2012-12-31T18:42:28.763 に答える