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

标签 javascript react-native realm

我正在使用 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);

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

enter image description here

我是不是漏掉了什么?

最佳答案

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

但是,您可以使用 Array.from(realm.objects('Car')) 急切地读取数组中的 Realm 集合,这将在调试器中显示得更好。

背景

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

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

所有这一切的问题在于它在 JavaScript 调试器中的显示效果不佳。不幸的是,我不知道有什么方法可以影响 Chrome 在调试器中显示对象的方式。

资料来源:我是一名 realm-js 贡献者。

关于javascript - RealmJS - 显示代理对象而不是对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42188554/

相关文章:

javascript - 带有 XCode 的正则表达式 Javascript

android - 导入 android.app.NotificationChannel 错误

realm - 在 swift 中查询嵌套可选 Realm 对象的最简单方法

ios - 向Realm托管对象添加字符串列表会导致应用在启动时崩溃

javascript - 使用imacros eval通过正则表达式提取值

javascript - 如何通过下面提到的对象的索引获取第一个对象

javascript - 如何在 React Native 中添加按钮?

react-native - 有没有 Instagram 故事进度条的库?

android - 将值设置为 Realm 对象

javascript - HTML 布局丢失