Проблемы с синтаксическим анализом массива JSON после получения из firebase при использовании ionic-selectable - PullRequest
0 голосов
/ 10 октября 2018

В настоящее время я занимаюсь разработкой приложения с использованием Ionic 3 и Firebase.Я использую ionic-selectable (вы можете увидеть мой stackblitz здесь ), чтобы пользователь мог выбрать опцию из моего массива базы данных Firebase и вернуть выбранную опцию для идентификатора пользователя.

Iу меня есть все для работы, за исключением того, что ionic-selectable не считывает извлеченный массив из базы данных.

Я извлекаю массив, используя следующий код:

    this.itemsRefdiag = afg.list('medicalhx');
    this.items = this.itemsRefdiag.snapshotChanges().map(changes => {
        return changes.map(c => ({ ...c.payload.val() }));
    });
    const dgRef = this.afg.database.ref();
    dgRef.child('medicalhx').orderByChild('name').on('value', snapshot => { this.snapshot2 = JSON.stringify(snapshot).replace(/"[0-9]":{"name":|{|}/g, ""); })

My console.logв результате:

"Hyperthyroidism","Hypothyroidism","Diabetes Type 1","Diabetes Type 2"

Однако при использовании ионного выбора для private diagnoses: Diagnosis[] = [this.snapshot2] я получаю «неопределенные» опции.Однако, когда я вручную набираю private diagnoses: Diagnosis[] = ["Hyperthyroidism","Hypothyroidism","Diabetes Type 1","Diabetes Type 2"], это работает.Я также попытался проанализировать массив JSON, используя вместо этого следующий код:

this.itemsRefdiag = afg.list('medicalhx');
    this.items = this.itemsRefdiag.snapshotChanges().map(changes => {
        return changes.map(c => ({ ...c.payload.val() }));
    });
const dbRef = this.afg.database.ref();
dbRef.child('medicalhx').orderByChild('name').on('value', snapshot =>
{     let snapshot3 = JSON.stringify(snapshot).replace(/"}/g, `"`);
let snapshot4 = snapshot3.replace(/"[0-9]":{"name":|{|}|"/g, "");
this.snapshot2 = snapshot4.split(",");
  });

Мой файл console.log приводит к объекту с отдельными строками (массивом):

["Hyperthyroidism","Hypothyroidism","Diabetes Type 1","Diabetes Type 2"]

Однако, ионный-selectable, похоже, не читает это, и я получаю неопределенную ошибку.Любые идеи о том, что я могу делать не так с массивом?

РЕДАКТИРОВАТЬ

Это на самом деле работает во второй раз, однако консольная ошибка выскакивает в первый рази я считаю, что это потому, что он не ждет появления результатов массива в первый раз.Есть ли способ добавить время ожидания загрузки массива?

1 Ответ

0 голосов
/ 11 октября 2018

Второй код, приведенный в вопросе, преобразовывающий его в реальный массив, работал, но требовал времени загрузки, поэтому всплывала ошибка консоли.Мне удалось обойти проблему времени загрузки, реализовав асинхронный поиск согласно этому stackblitz .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...