我经历了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;
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;
答案 0 :(得分:1)
data
是域的保留字,因为它已经具有data
作为data type。如果将架构名称更改为其他名称,则将解决问题。
Realm支持以下基本类型:bool,int,float,double, 字符串,数据和日期。
bool
属性映射到JavaScriptboolean
值int
,float
和double
属性映射到JavaScript数字值。内部int
和double
被存储为64位,而float
以32位存储。string
属性映射到string
data
属性映射到ArrayBuffer
date
属性映射到Date