Meteor app崩溃试图保护它

时间:2016-02-21 04:34:02

标签: meteor

这个应用程序工作正常,直到我试图“保护它”:

  • 删除不安全
  • remvoe autopublish
  • 添加帐户-ui accounts-password
  • 对代码进行了一些更改,如下所示

    //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   您的应用程序崩溃了。等待文件更改。

为什么会崩溃,应该如何修复?感谢

3 个答案:

答案 0 :(得分:1)

你可以从这里开始:

ReferenceError:两个/ both.js都没有定义帖子:两个/ both.js都是15:1

您缺少Posts集合的收藏作业。

答案 1 :(得分:1)

根据您的错误消息,因为您没有定义帖子集合。添加以下代码:

Posts = new Mongo.Collection('posts');

那将删除错误,但我想你可能从一个例子中复制/粘贴了这段代码,并想在不同的集合上制定一个拒绝规则?

答案 2 :(得分:0)

我认为您已经在项目的某个位置拥有post集合定义,因为它在删除autopublish包之前已经有效。您应该找到它并将所有集合定义文件放入lib文件夹而不是任何随机命名的文件夹,以便加载订单。阅读here

中有关meteor app结构的更多信息