gpt4 book ai didi

javascript - 在 Meteor 中访问订阅的问题

转载 作者:行者123 更新时间:2023-11-29 18:03:30 25 4
gpt4 key购买 nike

我对我尝试开发的 Meteor 应用程序中的“模板助手中的异常”错误感到沮丧。

在/lib/collections.js 我有:

Categories = new Meteor.Collection("categories");
Venues = new Meteor.Collection("venues");
VenuesAndUsers = new Meteor.Collection("venuesAndUsers");

在/server/main.js 我有:

Meteor.publish("Categories", function () {
return Categories.find({}, {sort: {order: 1}});
});
Meteor.publish("Venues", function () {
return Venues.find();
});
Meteor.publish("VenuesForUser", function () {
return VenuesAndUsers.find();
});

在/lib/router.js 我有:

Router.configure({
// Other stuff

waitOn: function() {
return [
Meteor.subscribe('Categories'),
Meteor.subscribe('Venues'),
Meteor.subscribe('VenuesForUser'),
];
}
});

在/client/templates/list.html 我有:

{{#each xzz}}
{{name}} - {{id}}<br />
{{/each}}

{{#each venues}}
{{venueId}} - {{userId}}<br />
{{/each}}

在/client/templates/list.js 我有:

venues: function() {
return VenuesForUser.find();
},
xzz: function() {
return Venues.find();
}

我的输出是:

Venue 1 - Venue 1 id
Venue 2 - Venue 2 id
...

在 javascript 控制台中,我得到:

Exception in template helper: .venues@http://localhost:3000/app/client/templates/list.js?2a82ae373ca11b4e9e171649f881c6ab1f8ed69b:11:7
bindDataContext/<@http://localhost:3000/packages/blaze.js?695c7798b7f4eebed3f8ce0cbb17c21748ff8ba8:2994:14
...

现在,我的问题是我的发布“VenuesFoUser”在尝试访问其内容时生成上述错误。

但是,为什么!?

编辑:如果我将“VenuesForUser”的所有实例更改为“VenuesAndUsers”,则订阅有效。但这有什么意义呢?我能否只为与收藏相匹配的订阅提供名称?

最佳答案

出版物将文档发布到您的集合中。发布可以命名为 random,但如果它从名为 NotRandom 的集合返回一个游标,那么这就是它们在客户端上发布到的集合。

您有一个名为 VenuesForUser 的发布,它返回集合 VenuesAndUsers 中的游标。在客户端,VenuesAndUsers 是包含从服务器发布的数据的集合。所以您只能执行 VenuesAndUsers.find(),因为没有名为 VenuesForUser 的集合。发布名称对其他任何内容都没有影响 - 它只是一个名称。它不会为您创建新的集合。

我希望我说清楚了。

关于javascript - 在 Meteor 中访问订阅的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33177382/

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