我正在使用流星和 FlowRouter。我有一个国家行政区划的集合,数据大约是2000个文件。我在几条路线中读取了这些数据,所以现在我每次访问使用这些数据的路线之一时都订阅同一个集合。
这会导致性能下降和资源浪费。鉴于此集合不会更改,是否有任何方法可以加载或订阅此数据一次并使其可用于整个应用程序或特定路由?
也许将数据保存在 settings.json 并将其作为对象提供会更好?
提前感谢您的帮助。
我正在使用流星和 FlowRouter。我有一个国家行政区划的集合,数据大约是2000个文件。我在几条路线中读取了这些数据,所以现在我每次访问使用这些数据的路线之一时都订阅同一个集合。
这会导致性能下降和资源浪费。鉴于此集合不会更改,是否有任何方法可以加载或订阅此数据一次并使其可用于整个应用程序或特定路由?
也许将数据保存在 settings.json 并将其作为对象提供会更好?
提前感谢您的帮助。
您需要在路由之间保持订阅处于活动状态。你可以使用这个包来做到这一点(由与 FlowRouter 相同的作者编写,因此它们可以很好地协同工作):
https://github.com/kadirahq/subs-manager
或者,创建一个 Meteor 方法来返回数据并将其保存在您的 Session 中。在这种情况下,它不会是被动的,因此取决于您的需求。
您在路由之外进行的任何订阅都将在全局范围内,这意味着来自该订阅的数据在任何地方都可用。您需要做的就是在您站点的根布局文件中设置订阅,然后该数据将始终保存在您本地的 minimongo 存储中。
这里的 Todo 应用示例中的 Todo 列表集合就是一个示例,这是该示例中的代码:
Tasks = new Mongo.Collection("tasks"); if (Meteor.isServer) { // This code only runs on the server Meteor.publish("tasks", function () { return Tasks.find(); }); } if (Meteor.isClient) { // This code only runs on the client Meteor.subscribe("tasks");
然后,您可以像往常一样查询该本地数据。