我已成功发布并订阅了两个集合。在客户端,我将subscribe方法放入自动运行功能,每次更改一些会话变量时我的集合都会更新。我的数据模型如下所示:
Topics: {
_id: ObjectID,
comments: [
commentId1,
commentId2,
etc...
]
}
Comments: {
_id: ObjectID,
}
当我创建新评论时,我会在Comments
集合中插入评论,并在阵列上使用Topics
更新$push
集合。在此之后,我预期,该流星重新呈现我的页面,但只有当我更改我的主题会话变量并将其更改回或手动重新加载页面时才会发生这种情况...只有这时meteor才会更新订阅。
为什么会这样?我想我错过了一些东西......但是文档没有给我任何线索。
答案 0 :(得分:0)
我想,原因是你在客户端执行数据库插入,但无法说明为什么它不会再次呈现页面。
另一种方法是,使用Meteor.call()
在服务器端执行插入:
if (Meteor.isClient){
....
....
Meteor.call('addComment', 'your_new_comment');
....
}
在服务器端:
if(Meteor.isServer){
Meteor.Methods({
'addComment' : function(data){
//your insertion code here.
Comments.insert(data);
}
});
}
您也可以为Topics
做同样的事情。这将更新服务器端的相关数据,并且由于您已经published-subscribed
这些数据,它将自动在客户端上发布,即使会话变量没有更改。