React native 域中的嵌套对象会反应为本机

React native 域中的嵌套对象会反应为本机,react-native,realm,React Native,Realm,问题 Realm React Native在父子嵌套关系中如何执行双向链接 示例 我有一个发票对象,它由发票行组成。在旧数据库中,InvoiceLine表中的每一行都有一个对其父发票ID的引用。因此,可以使用一个简单的“WHERE ID=”查询从InvoiceLine到其发票或从发票到其所有发票行 在Realm中,我将使用以下模式(意译): 这种直接链接的性能与使用ID并在领域内以传统方式进行比较如何?存储所有这些链接是否存在内存折衷?在大多数情况下,使用链接的性能应该与使用ID的性能几乎相同或

问题

Realm React Native在父子嵌套关系中如何执行双向链接

示例

我有一个发票对象,它由发票行组成。在旧数据库中,InvoiceLine表中的每一行都有一个对其父发票ID的引用。因此,可以使用一个简单的“WHERE ID=”查询从InvoiceLine到其发票或从发票到其所有发票行

在Realm中,我将使用以下模式(意译):


这种直接链接的性能与使用ID并在领域内以传统方式进行比较如何?存储所有这些链接是否存在内存折衷?

在大多数情况下,使用链接的性能应该与使用ID的性能几乎相同或更好。以下链接将比使用ID查找快得多。唯一的性能是当删除对象时,您会遇到一个麻烦。当删除父类的实例时,指向已删除父类的所有子链接都设置为
null
。这可能是您无论如何都想做的事情。当删除子对象时,有时需要更新一些内部簿记,但这通常是快速的虽然不易察觉。

有趣的是,您将
发票
属性存储为
发票
对象。我一直在使用
发票ID
跟踪父对象。当您创建
发票行
记录时,是否使用
{…,发票:realmInvoice,…}
?当调用
myInvoiceLine.invoice
时,它是否从域数据库获取最新的
invoice
记录?仅供参考,以下是域JS的Github中跟踪此功能的链接:“当您创建InvoiceLine记录时,是否使用{…,invoice:realmInvoice,}?”-没错。”调用myInvoiceLine.invoice时,它是否从域数据库获取最新的发票记录?“-还没有一点使用家长,但希望如此!你有问题吗?很好。现在还没有问题,只是在使用ID更新代码到使用对象链接之前感觉一下而已。它没有很好的记录,所以你必须做出很多假设。谢谢
class Invoice {};
Invoice.schema = {
  name: 'Invoice',
  properties: {
    ...
    lines: {type: 'list', objectType: 'InvoiceLine'}
  }
}

class InvoiceLine {};
InvoiceLine.schema = {
  name: 'InvoiceLine',
  properties: {
    ...
    invoice: 'Invoice',
  }
}