Node.js 为什么从MongoDB读取所有数据时都不会调用回调?
我最近将我的机器更新为Node.js版本7.5.0(如果我记得清楚的话,我以前使用的是版本4) 以前工作过的应用程序之一不再工作。这个问题可以这样重现:Node.js 为什么从MongoDB读取所有数据时都不会调用回调?,node.js,mongodb,mongojs,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
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');
});
行为没有改变
代码看起来非常像来自的代码。有,但有,连接到数据库显式打开;在我的例子中,与文档类似,我让mongojs
处理连接
为什么它没有到达回调?这是一个简单的问题,包与Node.js的版本冲突 当我更新Node.js和dependencies的版本时,我忘记了运行
npm install
,导致旧软件包仍在使用
我认为,在旧版本的
mongojs
包中,有一个问题阻止它在Node.js 7.5上运行时调用回调。该错误可能是未知的(因为没有人试图在Node.js的最新版本上运行过时版本的软件包),也可能是已知的,并且在以后的版本中已修复。这是一个简单的问题,软件包与Node.js的版本冲突
当我更新Node.js和dependencies的版本时,我忘记了运行npm install
,导致旧软件包仍在使用
我认为,在旧版本的
mongojs
包中,有一个问题阻止它在Node.js 7.5上运行时调用回调。该错误可能是未知的(因为没有人尝试在Node.js的最新版本上运行过时的包版本),也可能是已知的,并在以后的版本中修复。我刚刚将Node.js从7.2.1升级到7.5.0,这段代码在这两个版本中都适用。将connectionString
更改为mongodb://localhost:27017
和query
到{}
。我刚刚将Node.js从7.2.1升级到7.5.0,这两个版本的代码都适用于我。将connectionString
更改为mongodb://localhost:27017
和查询到{}
。