Javascript 如何从Meteorjs中的多个文件访问集合?
在我的主js文件中,我定义了一个“newMeteor.Collection(“Decks”),如果没有数据,我会填充一些数据 现在我在client文件夹中有一个views文件夹,其中包含模板事件的javascript。每个模板都有自己的js文件。这些事件需要查询和更新Decks集合,但我不知道该怎么做。我试图在事件代码中编写一个“newMeteor.Collection(“Decks”)”,但我得到一个错误,即集合已经存在 我可以想象使用requirejs将一个全局变量传递给事件,但我觉得在Meteor中一定有一种原生的方法 如何访问不同文件中的相同集合 例如,我的应用程序名为“builder”,因此主js名为“builder.js”,包含:Javascript 如何从Meteorjs中的多个文件访问集合?,javascript,meteor,Javascript,Meteor,在我的主js文件中,我定义了一个“newMeteor.Collection(“Decks”),如果没有数据,我会填充一些数据 现在我在client文件夹中有一个views文件夹,其中包含模板事件的javascript。每个模板都有自己的js文件。这些事件需要查询和更新Decks集合,但我不知道该怎么做。我试图在事件代码中编写一个“newMeteor.Collection(“Decks”)”,但我得到一个错误,即集合已经存在 我可以想象使用requirejs将一个全局变量传递给事件,但我觉得在Me
var Decks = new Meteor.Collection("Decks");
然后我在客户机文件夹中有另一个名为“do_other_stuff.js”的javascript文件,它想查询Decks集合,所以类似于:
var first_deck = Decks.findOne({name: "first"});
但很明显,这是行不通的,因为Decks不是一个全局变量。
Meteor.subscribe(“Decks”)
文件中的订阅(“Decks”)应该可以做到这一点。简单地说,让Decks
成为一个全局变量!删除var
关键字:
Decks = new Meteor.Collection("Decks");
哦,我想,因为window对象是不可访问的,所以我无法访问全局变量,但在尝试之后,我发现它们仍然是可访问的,你根本不用window对象来访问它们。这样做非常可怕,所以我必须转换到更好的方式,如要求。。。我不知道。。。我觉得Meteor应该有这样的东西,所以人们不必使用requirejs来保持代码的整洁。我打算再等一天,等一个更好的答案,如果我没有得到,就把你的答案标记为正确。你肯定给了我一个有效的答案:)。谢谢。别害怕,就是这样做的!仅此一点不会导致您的代码混乱,同时尝试将require.js与Meteor can一起使用!(我已经看到了,这很糟糕。)而且,
窗口
对象完全可以访问。只要确保你不想在服务器端使用它,你就可以通过投票取消你的反对票。确保在客户端和服务器上分别使用meteor.subscribe()和meteor.publish()发布和订阅了您的收藏(不使用meteor的autopublish软件包时),这可能是导致其他用户Collection.find()错误的原因。