Okay, więc jestem trochę zmieszany z Meteor.js. Stworzyłem z nią stronę, aby przetestować różne koncepcje i wszystko działało dobrze. Po usunięciu "niezabezpieczonego" i "autopublish", otrzymuję wiele błędów "odmowa dostępu" podczas próby pobrania i przekazania do serwera. Wierzę, że ma coś wspólnego z następującym fragmencie:Publikowanie i subskrypcja Meteor.js?
Template.posts.posts = function() {
return Posts.find({}, {sort: {time: -1}});
}
Myślę, że próbuje uzyskać dostęp do zbierania bezpośrednio, którym wolno było zrobić z „niebezpieczne” i „autopublish” włączone, ale kiedy zostały wyłączone, odmówiono dostępu. Kolejny kawałek myślę jest problematyczne:
else {
Posts.insert({
user: Meteor.user().profile.name,
post: post.value,
time: Date.now(),
});
myślę, że ten sam rodzaj rzeczy się dzieje: jest on próbuje uzyskać dostęp do kolekcji bezpośrednio, których nie wolno robić.
Moje pytanie brzmi, w jaki sposób mogę je ponownie przeliczyć, aby nie było potrzebne "niezabezpieczone" i "autopubliczne"?
Dzięki.
EDIT
końcowa:
/**
* 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;
}
});
}
tak, deklarujące zmienna "Posty", ale spróbuj uzyskać do niej dostęp za pomocą "postów" na serwerze. Powinieneś poprawić literówkę, ponieważ teraz masz pytanie i odpowiedź pokazującą kod, który nie działa. – user728291