React Native Realm Model存储对象数组?

时间:2017-10-08 21:10:09

标签: react-native realm

假设我想将这样的对象存储到领域数据库

Record 1
{name:'John',attributes:{hairColor:'black',birthDate:'1990-10-01'}}

Record 2
{name:'Sara',attributes:{gender:'female',allergies:['peanuts','cocaine']}}

所以我为我的本机反应项目做了类似的事情

import Realm from 'realm';

class ProductCategory {}
Person.schema = {
    name: 'Person',
    properties: {
        name: {type: 'string'},
        attributes: {type: 'list',objectType:'json'},
    }
};

Realm.open({schema: [Person]});

在我的react-native应用程序中运行此代码会显示错误消息:

  

警告遇到过一次。可能未处理的承诺拒绝   (id:0):错误:由于以下错误,架构验证失败:    - 属性'Person.attributes'类型'array'具有未知对象类型'json'

如何将属性定义为数组?

1 个答案:

答案 0 :(得分:1)

我对问题的理解:

您想保存人物及其对应属性的记录;因此,当您查询约翰时,您以后可以进行john.attributes.hairColor并获得black

我不明白的是,为什么attributestype: 'list'却似乎是一个对象。 (也许是说它是对象数组?)将其与显然是数组的allergies进行对比。

我将如何创建模式(我现在无法运行代码,因此请验证并告知其是否有效):

class Attributes {}
Attributes.schema = {
  name: "Attributes",
  properties: {
    hairColor: "string?", // ? = optional
    birthDate: "date?",
    gender: "string?",
    allergies: "string?[]", // [] = list or array
  }
}

class Person {}
Person.schema = {
  name: "person",
  properties: {
    name: "string",
    attributes: "Attributes", // Nested schema
  }
}

在注释中,您提到要创建另一个属性lotteryNumbers,它是一个数字数组。我会在Person.schema.properties-

中实现它
properties: {
  ...
  lotteryNumbers: "int[]" // Array of integers
}

如果我有任何错误,请告诉我;我也在学习,这就是我到达这里的方式:p