Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor模板在使用后退按钮或熨斗布线后没有反应_Javascript_Mongodb_Meteor_Iron Router - Fatal编程技术网

Javascript Meteor模板在使用后退按钮或熨斗布线后没有反应

Javascript Meteor模板在使用后退按钮或熨斗布线后没有反应,javascript,mongodb,meteor,iron-router,Javascript,Mongodb,Meteor,Iron Router,我有一个简单的模板,显示一个网站列表和一个详细信息页面,允许用户发布有关该网站的评论。出于某种原因,当单击浏览器中的“后退”按钮或链接到另一个页面,然后再次返回时,注释的更新功能不再是反应性的。集合已更新,但未呈现到模板。控制台中不会抛出任何错误 我怀疑我的助手有问题,但我是一个彻头彻尾的傻瓜,我花了7天或更长的时间来理解meteor,mongo,react…在上了一个简短的课程之后 更新集合的我的代码: Template.website_details_form.events({ "s

我有一个简单的模板,显示一个网站列表和一个详细信息页面,允许用户发布有关该网站的评论。出于某种原因,当单击浏览器中的“后退”按钮或链接到另一个页面,然后再次返回时,注释的更新功能不再是反应性的。集合已更新,但未呈现到模板。控制台中不会抛出任何错误

我怀疑我的助手有问题,但我是一个彻头彻尾的傻瓜,我花了7天或更长的时间来理解meteor,mongo,react…在上了一个简短的课程之后

更新集合的我的代码:

Template.website_details_form.events({
    "submit .js-add-comment": function(event) {
        var post, theID;
        post = event.target.post.value;
        theID = this._id;
        console.log("the post:" +post);  
        console.log("this is the id: " +theID);

        if(Meteor.user()) {     
             var user = Meteor.user().username;
             if (post != ""){
                 Websites.update({_id: theID}, {$addToSet:{comments:{user:user, comment:post}}});
                 $('input#post').removeClass('error');
             } else{
                 $('input#post').addClass('error');   
             }
         } else {
             swal("Please sign in to post!", "Oops...", "error");
         }      
         event.preventDefault();
     }
});
我的助手们公认是时髦的助手:

var details_ID;
var thecomments; 
Template.website_details.helpers({
    sites:function() {      
        if(details_ID === undefined) {
            return Websites.find(
                { title: 'Goldsmiths Computing Department' });
        } else {            
           return Websites.find({_id:details_ID});
        }                
     }
}); 

Template.website_details_item.helpers({
    comments:function() {
        if(thecomments === undefined) {
            var c = Websites.find({title: 'Goldsmiths Computing Department'}).fetch();
            return c[0].comments;
         } else {
            return thecomments;
         }
     }
});

Template.website_details_form.helpers({
    identify:function(){
    if(details_ID === undefined){
        return Websites.find({ 
            title: 'Goldsmiths Computing Department' });
        } else {            
            return Websites.find({_id:details_ID});
        }            
     }
});
我的路由器:

Router.route('/website_details', function () {
    this.render('navBar', {to: 'navbar' });    
    this.render('website_details', {to: 'main'});
});
我正在使用文档上的单击功能获取我在帮助程序中使用的VAR的信息…
this.\u id

在使用back按钮和iron routing之后,我确实看到了另一个专门询问反应性的问题,但该线程在github页面终止,没有多少交互,并解决了一个我没有的问题……据我所知……我是一个noob……提前感谢。

查看该页面,我发现:

  • 在中,
    网站
    集合正在正确更新
  • 解决此问题的两条建议

  • 帮助程序
    访问数据时,请直接从
    网站
    集合中读取数据:
  • 我建议使用第一种方法,因为它避免了在
    会话中存储大量数据,而且因为客户端的minimongo集合已经存储了相同的数据。

    查看,我发现:

  • 在中,
    网站
    集合正在正确更新
  • 解决此问题的两条建议

  • 帮助程序
    访问数据时,请直接从
    网站
    集合中读取数据:

  • 我建议使用第一种方法,因为它可以避免在
    会话中存储大量数据,而且客户端minimongo集合已经存储了相同的数据。

    您能创建一个git以便我们测试它吗?好的,谢谢!我清理了我的助手…终于明白了如何使用会话:)但我就是不能让这个事件重新呈现模板,你知道,反应性。。。我会尽快发布Git。@BlazeSahlzen我终于创建了Git。这是一个课堂项目,我必须尽快完成。回购协议在我试用了你的代码。在您的
    网站\u details
    中,您正在正确更新集合,但您的助手正在从未更新的
    会话中读取数据。通常,您希望助手直接从前端数据库读取数据(后端数据库会对其进行反应性更新)你能创建一个git以便我们测试它吗?好的,谢谢!我清理了我的助手…终于明白了如何使用会话:)但我就是不能让这个事件重新呈现模板,你知道,反应性。。。我会尽快发布Git。@BlazeSahlzen我终于创建了Git。这是一个课堂项目,我必须尽快完成。回购协议在我试用了你的代码。在您的
    网站\u details
    中,您正在正确更新集合,但您的助手正在从未更新的
    会话中读取数据。通常,您希望助手直接从前端数据库读取数据(后端数据库会对其进行反应性更新)
    Websites.update({ // Saving to collection
       _id : theID
    }, {
       $addToSet : {
          comments : {
             user : user, 
             comment : post
          }
       }
    });
    ...
    comments: function(){ 
       var post = Session.get('site'); // Reading from Session
       return post.comments;
    },
    ...
    var site_data = Websites.findOne({
       _id: someId
    });
    
    if(site_data) { // Check if comments_data is undefined
       return site_data.comment;
    } else {
       return null;
    }
    Websites.update({ // Saving to collection
       _id : theID
    }, {
       $addToSet : {
          comments : {
             user : user, 
             comment : post
          }
       }
    }, function(err, data) {
          if(!err) {
             var site_data = Session.get('site');
             /* Modify site_data */
             Session.set('site', site_data);
          }
    });