Meteor collection更新焦点和模糊延迟

Meteor collection更新焦点和模糊延迟,meteor,meteor-blaze,minimongo,Meteor,Meteor Blaze,Minimongo,我试图在blur上保存用户内容,但在保存后遇到了一个奇怪的UI冻结,这是我以前从未见过的 模板的简化版本: {{#each UserSession.getQuestions}} <textearea class='question'>{{UserSession.getVal this._id}}</teaxtarea> {{/each}} 更新成功,但执行保存后浏览器会冻结约一秒钟,因此如果用户单击另一个元素触发模糊,该元素不会清晰地聚焦。这是一个问题,因为我还想

我试图在blur上保存用户内容,但在保存后遇到了一个奇怪的UI冻结,这是我以前从未见过的

模板的简化版本:

{{#each UserSession.getQuestions}}
   <textearea class='question'>{{UserSession.getVal this._id}}</teaxtarea>
{{/each}}
更新成功,但执行保存后浏览器会冻结约一秒钟,因此如果用户单击另一个元素触发模糊,该元素不会清晰地聚焦。这是一个问题,因为我还想在用户键入时进行定期保存,但当我这样做时,打嗝会中断键入:由此产生的体验非常残酷

有趣的是,只有当更新的属性是一个对象或在列表中时,浏览器才会冻结。换言之:

UserSessions.update({ui-id:userSessionId},{$set:{“questions.questionId”:“someVal”}})和
UserSessions.update({ui-id:userSessionId},{$set:{“lastSavedAt”:new Date()})都会导致冻结

但是,
UserSessions.update({u id:userSessionId},{$set:{“someOtherProp”:“someVal”}})可以正常工作

我尝试了几种不同的方法,包括异步客户端模式和在
if(Meteor.isServer)
块中执行save via Meteor方法,结果都是一样的。必须与发布更新有关,但即使在我将发布函数查询设置为
{reactive:false}
时也会发生这种情况

我没有主意了。一如既往,我们非常感谢你的帮助

提前感谢,,
db

好的,我想我已经明白了。对于任何有此问题的人,如果您使用的是Iron Router,您应该检查它是否存在不必要的依赖关系。在这种情况下,正是重新运行的路由器阻塞了工作,因为数据钩子在UserSessions集合上包含了一个反应式查找请求。我将reactive设置为false,并指定字段以防止重新计算,然后一切都自行平滑

"blur .question": function(e) {
   var val = $(e.target).val();
   var questionId = this._id;
   var userSessionId = Meteor.user().getSessionId();
   var modifier = {$set: {}};
   modifier["$set"]["questions." + questionId + "] = val;
   UserSessions.update({_id: userSessionId}, modifier);
}