RealmJS - 显示代理对象而不是对象列表

Jas*_*bas 5 javascript realm react-native

我正在使用Realm JS和我的React Native应用程序.我在我的架构中插入了一个值,如下所示.

const CarSchema = {
  name: 'Car',
  properties: {
    model: 'string'
  }
};

let realm = new Realm({schema: [CarSchema]});
realm.write(() => {
  realm.create('Car', {
    model: 'Ford'
  });
});

let cars = realm.objects('Car');
console.log(cars);
Run Code Online (Sandbox Code Playgroud)

在Chrome控制台中,我获得了以下对象,而不是数据库中的所有汽车.

在此输入图像描述

我在这里错过了什么吗?

Tay*_*enn 17

这是Realm对象工作方式(以及列表和结果)的结果 - 而不是从数据库中对数据进行水化并对(可能)大量对象进行反序列化,Realm为您提供了延迟加载的对象和集合.Realm.objects('Car')不会返回一个JavaScript数组,而是一个Results对象 - 它的行为与数组完全相同,但它不是使用内置数组对象实现的.这就是为什么它看起来不像Chrome控制台中的一系列对象,即使它的行为相同.

但是,您可以急切地读取数组中的Realm集合,Array.from(realm.objects('Car'))并在调试器中更好地可视化.

背景

"代理"对象是Realm及其零拷贝哲学的基石.所有Realm SDK都以相同的方式实现 - 而不是通过序列化和反序列化的普通对象,您获得直接访问数据库的代理对象.

在realm-js中,实际的代理机制根据您的代码是在React Native,Node.js还是React Native Chrome调试器上运行而有所不同,因此这些代理的实现细节会有所不同.

所有这一切的问题在于它在JavaScript调试器中不能很好地显示.不幸的是,我不知道如何影响Chrome在调试器中显示对象的方式.

来源:我是一个领域的贡献者.