如何将模式对象推入另一个模式对象的array属性?

时间:2018-09-12 18:33:10

标签: javascript react-native realm-js

说明

我经历了 documentation,却找不到任何说明如何将对象推入其父对象的array属性的示例。

更清楚一点,我有一个架构Test,它具有属性data: {type: "data[]", default: []},但是我无法将任何data对象压入其中。

错误:

这是我得到的错误。

  

属性必须为'data'类型,已获取([object RealmObject])

我尝试过的事情:

这是我尝试过的:

this.realm.write(()=>{
  const dataObj = this.realm.create('data', data);
  this.user.test.data.push(dataObj);
})

我在做什么错了?

我也尝试过直接直接推送数据,但是出现类似的错误。

测试架构:

class Test{
}

Test.schema = {
    name: "test",
    primaryKey: "id",
    properties: {
        id: "string",
        start: "date?",
        duration: "int", //in seconds
        capsule_id: "string",
        creation: "date",
        status: "int",
        height: "float",
        weight: "float",
        time_of_evolution: "string",
        treatment: "bool",
        data: {type: "data[]", default: []},
        symptoms: {type: "symptom[]", default: []},
        meals: {type: "meal[]", default: []},
        device: "device?",
        ph11: "int?",
        ph71: "int?",
        ph12: "int?",
        ph72: "int?",
        cardinal_symptoms: {type: "cardinal_symptom[]", default: []},
    }
};

export default Test;

DeviceData架构

class DeviceData{}

DeviceData.schema = {
    name: 'data',
    primaryKey: "timestamp", //check to see if this is a good idea
    properties: {
        ph1: 'int',
        ph2: 'int',
        x: 'int',
        y: 'int',
        z: 'int',
        timestamp: 'int',
        raw: 'string' //base64, incase something went wrong
    }
};

export default DeviceData;

1 个答案:

答案 0 :(得分:1)

data是域的保留字,因为它已经具有data作为data type。如果将架构​​名称更改为其他名称,则将解决问题。

  

Realm支持以下基本类型:bool,int,float,double,   字符串,数据和日期。

     
      
  • bool属性映射到JavaScript boolean
  •   
  • intfloatdouble属性映射到JavaScript数字值。内部intdouble被存储为64位,而   float以32位存储。
  •   
  • string属性映射到string
  •   
  • data属性映射到ArrayBuffer
  •   
  • date属性映射到Date
  •