MongoDB cursor.each抛出错误

时间:2016-02-16 19:30:00

标签: javascript node.js mongodb

我正在尝试执行以下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)

1 个答案:

答案 0 :(得分:0)

使用cursor.forEach()而不是cursor.each()。 Cursor.forEach()是一个官方实现的mongodb方法,它不会抛出问题中显示的错误。