Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript/node.js:尝试访问对象时获取NULL';在某个函数之外的属性_Javascript_Node.js_Object_Null - Fatal编程技术网

JavaScript/node.js:尝试访问对象时获取NULL';在某个函数之外的属性

JavaScript/node.js:尝试访问对象时获取NULL';在某个函数之外的属性,javascript,node.js,object,null,Javascript,Node.js,Object,Null,我有下面的代码片段,它实际上是一个对SQL数据库进行查询的函数(用于查询)。 我只想从数据库中获取数据并在网页上使用它们。 问题是:在request.on()中。。。我正在调用date.setMyData()函数。仍然在请求中。在('row',函数(columns)…上,如果调用console.log(date.getMyData()),它将成功返回我的数据 但是,如果尝试在请求之外调用date.getMyData.on('row',function(columns)…我会得到NULL。。。 这

我有下面的代码片段,它实际上是一个对SQL数据库进行查询的函数(用于查询)。 我只想从数据库中获取数据并在网页上使用它们。 问题是:在request.on()中。。。我正在调用date.setMyData()函数。仍然在请求中。在('row',函数(columns)…上,如果调用console.log(date.getMyData()),它将成功返回我的数据

但是,如果尝试在请求之外调用date.getMyData.on('row',function(columns)…我会得到NULL。。。 这里有我遗漏的东西吗

  var date = new DBData();

    function executeStatement() {
  request = new Request(queryString, function(err, rowCount) {
    if (err) {
      console.log(err);
    } else {
     console.log(rowCount + ' rows');
    }
    connection.close();
  });

  request.on('row', function(columns) {

   columns.forEach(function(column) {
      if (column.value === null) {
        console.log('NULL');
      } else {
          date.setMyData(columns);


          //WHY THIS CODE RETURNS MY DATA?
          console.log(date.getMyData()); 

      }
    });
  });

  request.on('done', function(rowCount, more) {
    console.log(rowCount + ' rows returned');
  });

  connection.execSql(request);
}

function DBData(){
    var myData = null;

    this.setMyData = function(obiect){
        myData = obiect;
    };

    this.getMyData = function(){
        return myData;
    };
};

 console.log(date.getMyData()); //WHY I GET 'NULL' HERE?

当您运行该代码时,执行顺序将是

var date = new DBData()
console.log(date.getMyData()) //  null at this point

// end of execution

函数executeStatement()已定义,但未立即执行。它可能会在稍后调用时执行,此时它将填充“var date”,因此当您在executeStatement()的回调中控制台.log(date.getMydata())时,它将正确显示数据