好的,我對Meteor.js有些困惑。我創建了一個網站來測試各種概念,並且它運行良好。一旦我刪除「不安全」和「自動發佈」,當嘗試檢索並推送到服務器時,會出現多個「訪問被拒絕」錯誤。我相信它是與下面的代碼片段:Meteor.js發佈和訂閱?
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'來訪問它。你應該糾正錯字,因爲你現在有一個問題和答案顯示代碼不會運行。 – user728291