Nodejs:无法读取null属性

时间:2016-12-27 14:45:00

标签: javascript node.js mongodb express

我做了这条路线来检查猫鼬中是否有一些数据,基于此我将状态变量设置为true,并在路由级别检查其是否为真,并且发送响应相应,我得到了错误响应和服务器崩溃

  

无法读取'state'null的属性

这是代码:

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

var state = false;
user.remove({}, function(err){
  if(err){
      console.log('didnt clear');
      return;
  }else{
  user.find({}, function(err, data){
      if(err){
        console.log('error occured while finding');
        return;
      }
      this.state = true;
      console.log(this.state);

  })
  return this.state;
  }
})

if(state){
       res.json('removed all documents in collection);
  }else{
    res.json('something bad happened');
  }
})

1 个答案:

答案 0 :(得分:1)

首先改变:

  this.state = true;
  console.log(this.state);

为:

  state = true;
  console.log(state);

其次,这没有效果:

  return this.state;

从回调中返回什么并不重要,无论如何都会被忽略。

接下来,这将永远是假的:

if(state){ ... }

因为在你的任何回调开始之前都会调用此行。您在变量有可能与您分配给它的原始false不同之前测试变量。

这些是我想到的代码的第一个问题。可能会有更多问题,但首先您需要先了解评估报表的顺序,然后才能详细了解。

在变量可以更改之前测试变量时,不要指望它与您分配给它的原始值有任何不同。