遗留的流星应用程序不能在服务器上获取文档



我正在使用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版本

最新更新