mongodb - MongoDB 上的 Meteor react 性有多深或多少级别

标签 mongodb meteor

meteor react 是否适用于深层或嵌入式文档。想知道我应该如何构建数据库是否有限制,以及它们的 meteor react 性能是否需要考虑。

我知道这很好

{
   _id: "joe",
   name: "Joe Bookreader"
}

但是这个怎么样

{
   _id: "joe",
   name: "Joe Bookreader",
   addresses: {
                {
                  street: "123 Fake Street",
                  city: "Faketon",
                  state: "MA",
                  zip: "12345"
                }

              }
 }

或者这个

{
   _id: "joe",
   name: "Joe Bookreader",
   addresses: {
                {
                  street: "123 Fake Street",
                  city: "Faketon",
                  settings: 
                  {
                   false: true,
                   power: false
                  }
                  state: "MA",
                  zip: "12345"
                }
              }
 }

最佳答案

只有一个,只有顶层。 Meteor 通过 DDP 通过称为合并盒的机制将数据集更改传达给客户端。这是由 livedata 管理的,livedata 本身现在是 DDP 包的一部分。

Meteor 通过比较初始值和新值,然后将差异值发送到客户端以应用到其当前状态,并通过 Tracker 方法更新所有依赖对象和方法,从而对文档顶级字段进行更改。

因此,关于您的示例,'address.city''MA' 更改为 'NY''address .settings.false'truefalse 将使整个文档无效并导致计算重新运行。

尽管如此,Blaze 仍然是一项非常智能的 dom 技术。尽管它对使用这些更改文档的模板的计算需要重新运行,但很多时候,它可以检测更改是否实际上与 dom 相关,并采取相应的操作。但这并不是 100% 的保证。

作为引用,您可以在 meteorhacks 阅读 merge-box 的详细摘要。您还应该亲自了解文档比较如何在 livedata server 的源上工作。特别是 diffDocument 方法和相关方法。

关于mongodb - MongoDB 上的 Meteor react 性有多深或多少级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28046239/

相关文章:

meteor - 更改配置文件字段时如何等待 Meteor.users

javascript - METEOR - 将数据从父模板传递到子模板

MongoDB 聚合 : Add each array value to each object inside array from another field. 合并/组合来自不同字段的两个数组

java - 如何从 ReflectionDBObject 中获取正确类型的列表

Mongodb 检查存在计数与 findOne 性能

mongodb - 如何仅在一个查询中获取对一个集合的多个查询的计数?

email - meteor 电子邮件错误

mongodb - 来自 MongoDB 中值的动态键

javascript - 仅使用提供的更改更新指定字段,mongodb

javascript - 使用模板助手显示 meteor 的时间和日期