【问题标题】:Strange error with mongoose猫鼬的奇怪错误
【发布时间】:2016-10-04 16:27:05
【问题描述】:
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

【问题讨论】:

  • 这将有助于了解UserModel 模式是如何定义的以及req.session.user 的值。
  • 我只在会话中存储用户 ID,而不是整个用户对象。

标签: javascript node.js mongodb express mongoose


【解决方案1】:

试试

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

问题是您要查询的用户具有名为user 的属性,其值为当前用户。您真正想要的(我假设)是数据库中的用户项,即当前会话用户。

或者,更好的是,我喜欢这样做

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

【讨论】:

    猜你喜欢
    • 2015-11-06
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 2017-06-15
    • 2012-07-30
    • 1970-01-01
    相关资源
    最近更新 更多