Object.values ​​объекта realmjs возвращает пустой массив

Описание

Я пытаюсь преобразовать мой объект области в массив, как можно увидеть ниже в методе history.

class RealmStore {

    @observable symptoms = {};
    @observable meals    = {};

    @computed get history(){
        return [...Object.values(this.symptoms), ...Object.values(this.meals)];
    }

    //More methods to populate this.symptoms and this.meals
}

Когда я вхожу this.symptoms Я получаю следующий вывод в моем терминале:

{
  '0': {
    date: Fri Jun 29 2018 15: 56: 48 GMT + 0200(CEST),
    name: 'Regurgitation',
    value: 1
  },
  '1': {
    date: Fri Jun 29 2018 15: 58: 09 GMT + 0200(CEST),
    name: 'Belching',
    value: 1
  },
  '2': {
    date: Fri Jun 29 2018 16: 10: 39 GMT + 0200(CEST),
    name: 'Heartburn',
    value: 2
  },
  '3': {
    date: Fri Jun 29 2018 23: 30: 36 GMT + 0200(CEST),
    name: 'Heartburn',
    value: 1
  }
}

Когда я вхожу Object.keys(this.symptoms) Я получаю следующее в моем терминале:

[ '0', '1', '2', '3' ]

Когда я вхожу Object.values(this.symptoms) Я получаю следующее в моем терминале:

[]

Это единственный способ, которым это работает:

        const values = [];
        for(let prop in this.symptoms){
            if(this.symptoms.hasOwnProperty(prop)){
                values.push(this.symptoms[prop])
            }
        }
        console.log(values);

Это регистрирует следующее в моем терминале:

[{
    date: Fri Jun 29 2018 15: 56: 48 GMT + 0200(CEST),
    name: 'Regurgitation',
    value: 1
  },
  {
    date: Fri Jun 29 2018 15: 58: 09 GMT + 0200(CEST),
    name: 'Belching',
    value: 1
  },
  {
    date: Fri Jun 29 2018 16: 10: 39 GMT + 0200(CEST),
    name: 'Heartburn',
    value: 2
  },
  {
    date: Fri Jun 29 2018 23: 30: 36 GMT + 0200(CEST),
    name: 'Heartburn',
    value: 1
  }
]

Вопрос:

Что приводит к тому, что объект realmjs не может возвращать массив значений?

2 ответа

Решение

В настоящее время не уверены, почему Object.values() не работает. Я пошел дальше и использовал эту альтернативу, которая, согласно некоторым сообщениям, может вызвать проблемы с производительностью.

Array.from(this.symptoms);

Для меня это произошло из-за несовместимости типов данных, доступных в Атласе. например, поле даты в схеме имело тип «Дата», но некоторые значения в коллекции имели тип «строка». Наличие согласованных типов данных решило для меня проблему.

Другие вопросы по тегам