首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流星防止在每个编辑上重新加载数据?

流星防止在每个编辑上重新加载数据?
EN

Stack Overflow用户
提问于 2013-12-16 21:14:40
回答 1查看 137关注 0票数 0

我正在进行我的第一个Meteor项目--完成了80%的应用程序,接管了其他人的代码。

我们有一个很大很复杂的对象模型,有点像:

代码语言:javascript
复制
something: { ... }
attachments: [ {...}, {...}, ...]
another-thing: { ... },
....

它是使用以下方式加载的(因此我们使用的是LocalCollection.Cursor而不是获取):

代码语言:javascript
复制
Inspections.findOne({_id: inspection_id})

此对象填充一个模板,该模板被分成几个单独的组件模板。

在其中一个组件模板中,用户可以更新各种属性。例如,选择或取消选择附件:

代码语言:javascript
复制
Object.attachments[0].selected = true;

然后我们更新如下(其中updatedAttachments是更新后的附件数组):

代码语言:javascript
复制
InspectionOrders.update({ _id: inspection._id }, {
  $set: {
    attachments:updatedAttachments
  }
});

问题是附件(和一些其他属性)从一个可以花一段时间的其他数据中加载一堆数据。更改select状态需要3-4秒才能重新呈现,因为所有这些小附件都将再次下载。

我的问题:

  • 是否有一种方法可以处理不需要在每次更改时下载此数据的对象?
  • 一般来说,把这个对象分成多个小对象是个好主意吗?如果父对象的属性被更改,这不需要重新加载所有对象吗?

我尝试在{{#isolate}}中扭曲模板的部分内容,但没有什么不同。

编辑:

数据结构是这样的:

代码语言:javascript
复制
InspectionOrder
|
|- Attachments [file names]
|
|- Findings [keys]

加载页面或更新InspectionOrder时。重新下载所有附件(图像文件),并再次填充所有发现(使用引用键)。

问题不在于更新的速度。所有这些数据的重新加载并没有改变。

EN

回答 1

Stack Overflow用户

发布于 2013-12-16 22:32:35

不看数据,我有点不清楚问题出在哪里,但以下是一些你可以尝试的东西:

更新较少的数据

您可以只更新更改的属性,而不是设置整个附件数组。例如:

代码语言:javascript
复制
InspectionOrders.update({_id: inspection._id}, {$set: {"attachments.0.selected": true}});

在给定文档有大量附件的情况下,这会有所帮助。这对于DB来说执行起来更快,但是,我不清楚服务器是否会将整个文档发布回用户。也就是说,这可能会有所帮助,但可能不是一场大胜利。

发布较少的数据

在服务器上,您可以在发布字段时尝试从InspectionOrders中选择性地删除字段。例如:

代码语言:javascript
复制
Meteor.publish('inspectionOrders', function() {
  return InspectionOrders.find({}, {
    fields: {'attachments.hugeBinaryFile': 0}
  });
});

如果您只是在每个文档中发布大量额外的数据,这会有所帮助。如果您将较少的数据放在线路上,您的文档将更快地同步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20621038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档