这个应用程序工作正常,直到我试图“保护它”:
对代码进行了一些更改,如下所示
//both.js
FooterButtons = new Mongo.Collection('footerButtons');
Tasks1 = new Mongo.Collection('tasks1');
Tasks = new Mongo.Collection('tasks');
Tasks1.allow({
insert: function (userId, doc) {
return userId;
}
});
// deny anyone that tries to update the document userId
Posts.deny({
update: function (userId, docs, fields, modifier) {
// can't change owners
return _.contains(fields, 'userId');
}
});
//server.js
Meteor.publish('tasks', function(){
return Tasks.find({userId: this.userId});
});
Meteor.publish('tasks1', function(){
return Tasks1.find({userId: this.userId});
});
Meteor.publish('footerButtons', function(){
return FooterButtons.find({userId: this.userId});
});
现在应用程序崩溃,浏览器说
/Users/myName/.meteor/packages/meteor-tool/.1.1.10.1b51q9m++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server- LIB / node_modules /纤维/ future.js:245 扔(除息); ^ ReferenceError:未定义帖子 在both / both.js:15:1 在both / both.js:20:4 at /Users/myName/Documents/meteor/microscope/.meteor/local/build/programs/server/boot.js:242:10 at Array.forEach(native) 在函数。 .each。 .forEach(/Users/empl1/.meteor/packages/meteor-tool/.1.1.10.1b51q9m++os.osx.x86_64+web.browser+web.cordova /mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11) at /Users/myName/Documents/meteor/microscope/.meteor/local/build/programs/server/boot.js:137:5 退出代码:8 您的应用程序崩溃了。等待文件更改。
为什么会崩溃,应该如何修复?感谢
答案 0 :(得分:1)
你可以从这里开始:
ReferenceError:两个/ both.js都没有定义帖子:两个/ both.js都是15:1
您缺少Posts集合的收藏作业。
答案 1 :(得分:1)
根据您的错误消息,因为您没有定义帖子集合。添加以下代码:
Posts = new Mongo.Collection('posts');
那将删除错误,但我想你可能从一个例子中复制/粘贴了这段代码,并想在不同的集合上制定一个拒绝规则?
答案 2 :(得分:0)
我认为您已经在项目的某个位置拥有post
集合定义,因为它在删除autopublish
包之前已经有效。您应该找到它并将所有集合定义文件放入lib
文件夹而不是任何随机命名的文件夹,以便加载订单。阅读here