Как вставить объект схемы в свойство массива другого объекта схемы? - PullRequest
0 голосов
/ 12 сентября 2018

Описание

Я просмотрел документацию и не смог найти никаких примеров, объясняющих, как вставить объект в свойство массива его родителя..

Чтобы быть немного более понятным, у меня есть схема Test, у которой есть свойство data: {type: "data[]", default: []}, однако я не могу вставить в нее какие-либо data объекты.

Ошибка:

Вот ошибка, которую я получаю.

Свойство должно иметь тип 'data', got ([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 голосов
/ 13 сентября 2018

data - зарезервированное слово для области, поскольку оно уже имеет тип данных как data.Если имя схемы изменилось на другое, проблема будет решена.

Область поддерживает следующие основные типы: bool, int, float, double, string, data и date.

  • bool свойства отображаются в JavaScript boolean значения
  • int, float и double свойства отображаются в числовые значения JavaScript.Внутренне int и double хранятся как 64-битные, а float - с 32-битными.
  • string свойства сопоставляются с string
  • data свойства сопоставляются сArrayBuffer
  • date сопоставить свойства с Date
...