【发布时间】:2016-09-08 23:28:29
【问题描述】:
在我的项目中,我正在使用需要集合名称来在集合中进行一些搜索的包。我刚刚迁移到 Meteor 1.3,现在这个包不起作用了。
在代码包中使用类似:
const search = (collection_name) => {
let collection = this[collection_name]
...
}
现在集合不再在全局范围内。
我可以在我的lib/collections.js 中添加我的收藏,在global[collection_name] = Collection 中添加,但我更愿意修复包以更灵活并兼容 Meteor 1.3。
如果你只知道集合名称,是否有可能获得 Mongo Collection?
【问题讨论】:
-
相信你可以做到
window[collectionName],见stackoverflow.com/a/20785981/2805154 -
不,你不能。我的意思是它不能在服务器上运行,这就是我提到
global的原因。在 Meteor 1.3 中,您必须手动将 then 添加到全局空间中,这不是一个好的解决方案。这将迫使每个 Meteor 1.3 应用程序创建者(正在使用我的包)手动将他们的集合添加到全局空间中。使用 ES6 模块的主要思想是尽可能避免全局变量。