gpt4 book ai didi

javascript - 在不启动 meteor 的情况下使集合在客户端可用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:26:04 24 4
gpt4 key购买 nike

当我在服务器上定义我的 meteor 集合并尝试在客户端访问它们而不使用 meteor 提供的任何方法 rendered, events, created, helpers ... 我总是得到一个Meteor collection not defined 错误 如果我尝试在客户端重新定义方法,我会得到 Meteor collection already exists。我可以通过在 Meteor.startup() 函数中引用我定制的集合来解决这个问题。我如何在客户端引用我在服务器上定义的集合。在 meteor 文档中,甚至可以在声明之前创建 Meteor.Collection() 的两个实例并进行订阅。

// okay to subscribe (and possibly receive data) before declaring
// the client collection that will hold it. assume "allplayers"
// publishes data from **server's "players" collection.**
Meteor.subscribe("allplayers");
...
// client queues incoming players records until ...
...
Players = new Meteor.Collection("players");

最佳答案

您可以将 Players = new Meteor.Collection("players"); 放在文件的顶部,而不是在 Meteor.startup 中。在启动 Meteor.subscribe

之前确保它已定义

例如您的文件可能是:

Players = new Meteor.Collection("players");
MyCollection2 = new Meteor.Collection("MyCollection2");

Meteor.subscribe("allplayers");
Meteor.subscribe("mycollection2");

..rest of stuff

更简洁的方法可能是在项目的根目录中创建一个包含此文件的文件,这样它就可以在客户端和服务器上使用,而无需为每个重新定义它们,例如 collection.js 在你的项目根目录下可以包含

Players = new Meteor.Collection("players");
MyCollection2 = new Meteor.Collection("MyCollection2");

if(Meteor.isClient) {
Meteor.subscribe("allplayers");
Meteor.subscribe("mycollection2");
}

所以现在您不必在 /server/client 上定义 PlayersMyCollection2了。 meteor 加载文件的方式将确保它在您的其他常规文件之前定义。如果您按照其他 meteor 示例中使用的 /client/server/public 格式排列文件,这可能效果最好(派对和待办事项)

编辑:正如 BenjaminRH 所建议的那样,将您的文件放在 /lib/collections.js 中可以确保它甚至会在根项目目录中的其他文件之前加载。

关于javascript - 在不启动 meteor 的情况下使集合在客户端可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com