为什么在从MongoDB读取所有数据时永远不会调用回调?

时间:2017-02-09 22:33:55

标签: node.js mongodb mongojs

我最近将我的机器更新为Node.js版本7.5.0(如果我记得很清楚,我以前使用的是版本4)。

以前工作的其中一个应用程序不再起作用。这个问题可以像这样重现:

var connectionString = 'mongodb://127.0.0.1:27017/blog',
    mongojs = require('mongojs'),
    db = mongojs(connectionString, ['articles']),
    dataArticles = db.collection('articles');

db.on('error', function (err) {
    console.log('A');
});

db.on('connect', function () {
    console.log('B');
});

dataArticles.find({}).toArray(function (err, articles) {
    console.log('C');
});

此代码在升级之前工作正常,但现在,没有调用任何回调。没有错误,没有。控制台仍然是空的。

如果我用:

替换最后一个块
db.runCommand({ping: 1}, function (err, res) {
    console.log('C');
});

行为没有改变。

代码看起来非常像the official documentation中的代码。有a similar question on StackOverflow,但在那里,显式打开了与数据库的连接;就我而言,与文档类似,我让mongojs处理连接。

为什么它没有到达回调?

1 个答案:

答案 0 :(得分:0)

这是一个简单的问题,包与Node.js的版本冲突。

虽然我更新了Node.js和依赖项的版本,但我忘了运行npm install,导致仍然使用旧包。

我想在mongojs包的旧版本中存在一个问题,阻止它在Node.js 7.5上运行时调用回调。这个bug是未知的(因为没有人试图在最新版本的Node.js上运行一个过时的软件包版本),或者在以后的版本中已经知道并修复了它。