Получение undefined затем в возвращенном обещании после нажатия в angularfire

Я пытаюсь получить данные, которые только что были отправлены в firebase, чтобы я мог использовать $key в другом нажатии в попытке нормализовать данные. Я использую angularfire 2 и ionic 2

У меня есть провайдер, который возвращает обещание:

pushData(fbPath: string, data): any {
    return new Promise(resolve => {
      resolve(this.af.database.list(fbPath).push(data));
    });
  });
}

И в компоненте у меня есть простой вызов, который вызывается после того, как пользователь заполняет форму

 this.api.pushData('organisations/', organisation).then(org => {
    console.log(org);
 });

Однако в console.log я получаю

введите здесь описание изображения

Что вряд ли можно использовать. Все, что я хочу в ответ, это $key, который в настоящее время равен org.path.o[1], который, я думаю, я могу использовать, но это кажется немного шатким.

Любопытно, почему then и catch не определены. Я хотел бы, чтобы возвращаемые данные были аккуратным объектом, например

 { 
   '$key':'-KfB5tltOeuXpQ_pRzR3',
   'name':'My New Organisation',
   'registeredDate':345345345345
 }

Что довольно просто при получении данных из firebase с помощью простого

getData(fbPath: string) {
   return new Promise(resolve => {
     this.af.database.list(fbPath).subscribe(res => resolve(res));
   });
}

В Angularfire2 docs говорится, что сохраненные данные (в .list) имеют возвращенное обещание в методе push. Я просто не могу заставить его работать должным образом.


person Community    schedule 14.03.2017    source источник


Ответы (1)


В нативной firebase (не завернутой в angularfire2), когда вы получаете странный объект, подобный этому, вы можете вызвать для него .val(), чтобы получить аккуратно отформатированный объект.

Не проверял, но весьма вероятно, что это сработает.

person nickscheynen    schedule 14.03.2017