在引用数据更新时更新嵌入式数据

巨集

我正在构建一个Meteor应用程序,当前正在创建出版物,并且遇到了围绕相关文档和嵌入式文档的常见设计难题。我的数据模型(已简化)具有Bookings,每个模型都有一个relatedClient和一个related Service为了优化检索收集我嵌入的重点领域的速度ClientServiceBooking,并链接到ID -我的预订模式的结构如下:

export interface Booking extends CollectionObject {
  client_name: string;
  service_name: string;
  client_id: string;
  service_id: string;
  bookingDate: Date;
  duration: number;
  price: number;
}

在此模型中,client_idservice_id是对链接文档的引用和client_name/ service_name,因为它们在显示预订列表时被使用。

在我看来,这一切都很好,但是难题的缺失部分是使此嵌入式数据保持最新。如果系统另一部分中的用户更新了一项服务(这将是一个响应式集合),那么我需要它来触发将service_name更新为具有相应服务ID的所有预订。有什么活动可以订阅吗?客户端,我有一个表格,允许用户添加/编辑仅使用MongoObservable集合上的insert或update方法的Service-我的OOP部分感觉需要在服务器代码中覆盖此内容,然后再进行更新相关数据还是我完全以错误的方式进行此操作?

这一切都是无关紧要的吗,我实际上只是使用https://atmospherejs.com/reywood/publish-composite并返回相关文档的集合(感觉是一次返回数百个预订会损害生产环境中的性能)

吉姆

正如您所描述的那样,我使用了很多“外键”概念,并且在处理服务名称时会对集合中的数据进行非规范化。我明确地这样做是为了避免额外的查找/发布。

我使用2种策略来保持最新状态。第一种是在保存源数据时完成的,例如在Meteor方法调用中。我将立即更新反标准化数据,并触摸其他集合。我会在“高读取,低写入”情况下进行所有这些操作。

另一种策略是在更新源集合时使用集合挂钩触发。我用这个包:matb33:collection-hooks

从概念上讲,它类似于第一个,但是了解何时执行此操作的钩子有所不同。

我正在使用的当前应用程序中使用的示例:我们有一个带有评论的新闻提要。新闻项和评论位于单独的集合中,并且评论记录的每个记录均具有关联新闻项的ID。

我们会保持与新闻条目本身相关的连续评论计数。每当添加或删除评论时,我们都会增加/减少计数并立即更新新闻项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

更新mongodb中的多嵌入式数据

使用嵌入式Firebird时,删除表失败并显示“元数据更新失败”

带有嵌入式if语句的For循环,用于更新数据框

将现有的mongodb数据更新为嵌入式文档

PHPSpreadsheet:更新模板时保留嵌入式对象

Tkinter 中的嵌入式 Matplotlib 图仅在按键事件上按下“g”时使用新数据更新。为什么?

更新嵌入式Mongo文档-Mongoengine

pymongo 嵌入式文档更新

嵌入式文档中的批量更新

Mongodb更新嵌入式字段

在ember中处理嵌入式数据

Spring Boot数据嵌入式Cassandra

MongoDb Compass将数据库引用导出为嵌入式JSON

如何使嵌入式mongodb在应用程序关闭时保持数据?

将数据添加到与PostingFormats相关的Java嵌入式Elasticsearch中的索引时出错

连接到嵌入式Derby数据库时出现java.lang.NoClassDefFoundError

从csv加载数据时不考虑空手道嵌入式表达式

VueJ:使用嵌入式模板从嵌入式组件内部访问数据

通过嵌入式阵列MongoDB更新/迭代

更新mongodb中arrays对象的arrays的嵌入式文档

如何更新嵌入式svg元素的来源

更新mongodb嵌入式数组中的所有元素

嵌入式数组更新后如何取回新值?

嵌入式资源txt文件未更新

为嵌入式Linux设备实现更新/升级系统

更新/替换Google文档中的嵌入式图像

安全现场更新嵌入式Linux的推荐技术

数组中嵌入式文档的collection更新属性

更新多个嵌入式文档不起作用