我正在尝试执行以下nodejs / mongoDB代码:
var tickers = [];
MongoClient.connect(mongoUrl, function(err, db) {
assert.equal(null, err);
console.log("Connected correctly to server."); //ok
var cursor = db.collection('STI').find();
cursor.each(function(err, doc){
assert.equal(err, null);
console.log(doc.symbol); //executes fine
tickers.push(doc.symbol);
})
});
console.log(tickers);
符号正在向控制台正常注销,但在此之后代码抛出错误“TypeError:无法读取属性”符号'为null'。
代码似乎在执行'tickers.push'部分时忘记了doc.symbol。我该如何解决这个问题?
更新:
我尝试将console.log(tickers)转换为cursor.each回调,并打印出每次迭代的数组,因此符号推送正在进行。但是我仍然得到同样的错误
更新:完整错误消息
/Users/kevin/Projects/yahooscrape/node_modules/mongodb/lib/utils.js:98 process.nextTick(function(){throw err;}); ^
TypeError:无法读取null的属性“symbol” 在/Users/kevin/Projects/yahooscrape/index.js:21:19 在handleCallback(/Users/kevin/Projects/yahooscrape/node_modules/mongodb/lib/utils.js:96:12) at /Users/kevin/Projects/yahooscrape/node_modules/mongodb/lib/cursor.js:736:16 在handleCallback(/Users/kevin/Projects/yahooscrape/node_modules/mongodb/lib/utils.js:96:12) at /Users/kevin/Projects/yahooscrape/node_modules/mongodb/lib/cursor.js:670:5 在handleCallback(/Users/kevin/Projects/yahooscrape/node_modules/mongodb-core/lib/cursor.js:154:5) at setCursorDeadAndNotified(/Users/kevin/Projects/yahooscrape/node_modules/mongodb-core/lib/cursor.js:463:3) 在nextFunction(/Users/kevin/Projects/yahooscrape/node_modules/mongodb-core/lib/cursor.js:644:7) 在Cursor.next [as _next](/Users/kevin/Projects/yahooscrape/node_modules/mongodb-core/lib/cursor.js:685:3) at nextObject(/Users/kevin/Projects/yahooscrape/node_modules/mongodb/lib/cursor.js:655:8)
答案 0 :(得分:0)
使用cursor.forEach()而不是cursor.each()。 Cursor.forEach()是一个官方实现的mongodb方法,它不会抛出问题中显示的错误。