【发布时间】:2026-02-07 21:35:01
【问题描述】:
好的,所以我对 Meteor.js 有点困惑。我用它创建了一个站点来测试各种概念,它运行良好。删除“不安全”和“自动发布”后,在尝试检索和推送到服务器时会出现多个“拒绝访问”错误。我相信它与以下 sn-p 有关:
Template.posts.posts = function () {
return Posts.find({}, {sort: {time: -1}});
}
我认为它正在尝试直接访问该集合,它被允许在启用“不安全”和“自动发布”的情况下进行,但一旦它们被禁用,它就会被拒绝访问。另一个我认为有问题的部分:
else {
Posts.insert({
user: Meteor.user().profile.name,
post: post.value,
time: Date.now(),
});
我认为同样的事情正在发生:它试图直接访问集合,这是不允许的。
我的问题是,我如何重新考虑它以便我不需要启用“不安全”和“自动发布”?
谢谢。
编辑
决赛:
/**
* Models
*/
Posts = new Meteor.Collection('posts');
posts = Posts
if (Meteor.isClient) {
Meteor.subscribe('posts');
}
if (Meteor.isServer) {
Meteor.publish('posts', function() {
return posts.find({}, {time:-1, limit: 100});
});
posts.allow({
insert: function (document) {
return true;
},
update: function () {
return false;
},
remove: function () {
return false;
}
});
}
【问题讨论】:
-
是的,您声明了变量“Posts”,但尝试使用服务器上的“posts”访问它。您应该更正错字,因为现在您有一个显示无法运行的代码的问题和答案。
标签: javascript meteor