Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Meteorjs中的多个文件访问集合?_Javascript_Meteor - Fatal编程技术网

Javascript 如何从Meteorjs中的多个文件访问集合?

Javascript 如何从Meteorjs中的多个文件访问集合?,javascript,meteor,Javascript,Meteor,在我的主js文件中,我定义了一个“newMeteor.Collection(“Decks”),如果没有数据,我会填充一些数据 现在我在client文件夹中有一个views文件夹,其中包含模板事件的javascript。每个模板都有自己的js文件。这些事件需要查询和更新Decks集合,但我不知道该怎么做。我试图在事件代码中编写一个“newMeteor.Collection(“Decks”)”,但我得到一个错误,即集合已经存在 我可以想象使用requirejs将一个全局变量传递给事件,但我觉得在Me

在我的主js文件中,我定义了一个“newMeteor.Collection(“Decks”),如果没有数据,我会填充一些数据

现在我在client文件夹中有一个views文件夹,其中包含模板事件的javascript。每个模板都有自己的js文件。这些事件需要查询和更新Decks集合,但我不知道该怎么做。我试图在事件代码中编写一个“newMeteor.Collection(“Decks”)”,但我得到一个错误,即集合已经存在

我可以想象使用requirejs将一个全局变量传递给事件,但我觉得在Meteor中一定有一种原生的方法

如何访问不同文件中的相同集合

例如,我的应用程序名为“builder”,因此主js名为“builder.js”,包含:

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()错误的原因。