我正在使用MongoDB Atlas支持遗留的Meteor 1.2.1应用程序,并且没有任何明显的代码更改,它突然不显示任何文档-代码至少有5个月没有更改。
查看DB,文档在那里,但在服务器上另一方面,find().fetch()调用都返回0个文档:
var documents = Articles.find().fetch();
console.log(`++ Found: ${documents.length} articles`);
日志:
++ Found: 0 articles
有趣的是,如果我抓住Meteor正在使用的原始DB连接并自己执行查询,则可以找到数据:
var getDocumentCounts = function (collectionName) {
var Future = Npm.require('fibers/future'), future = new Future();
var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db;
db.collection(collectionName).count(
function(error, results) {
if (error) throw new Meteor.Error(500, "failed");
future.return(results);
}
);
return future.wait();
}
var result = getDocumentCounts('articles');
console.log(`articles: ${result}`);
日志:
articles: 259
应用程序正在使用一些NPM包,但是使用npm-shrinkwrap.json
(还是旧版本)来确保它们的版本在重新启动/重建期间不会意外升级。
节点来自侏罗纪@ v0.10.41
我不明白为什么应用程序会突然出现这个问题。寻找一个简单的解决方案,而不是冗长的"升级一切">
同样有趣的是,如果我连接到我的本地开发mongo db,一切工作正常。mongodb Atlas正在使用分片,而本地mongodb没有,但是它已经使用这些分片很多很多个月了。
我认为这个问题是由于流星版本使用的mongo驱动程序不再与Atlas中运行的mongo版本兼容。如果可能,检查Atlas MongoDB版本