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