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'
从 true
到 false
将使整个文档无效并导致计算重新运行。
尽管如此,Blaze 仍然是一项非常智能的 dom 技术。尽管它对使用这些更改文档的模板的计算需要重新运行,但很多时候,它可以检测更改是否实际上与 dom 相关,并采取相应的操作。但这并不是 100% 的保证。
作为引用,您可以在 meteorhacks 阅读 merge-box 的详细摘要。您还应该亲自了解文档比较如何在 livedata server 的源上工作。特别是 diffDocument
方法和相关方法。
关于mongodb - MongoDB 上的 Meteor react 性有多深或多少级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28046239/