Angularfire2 и обновление различных объектов с помощью разветвления данных

#javascript #angular #firebase-realtime-database #angularfire2

#javascript #angular #firebase-база данных в реальном времени #angularfire2

Вопрос:

Мне нужно обновить объекты в моей базе данных, поэтому я делаю это:

 const items = af.database.list('/items');
items.update('key-of-some-data1', { size: newSize1 });
items.update('key-of-some-data2', { size: newSize2 });
  

Это работает как шарм, но я хотел бы обновить элементы с помощью «разветвления данных», как описано здесь:
https://firebase.google.com/docs/database/web/read-and-write
https://firebase.googleblog.com/2015/10/client-side-fan-out-for-data-consistency_73.html

Итак, я делаю:

 var updates = {};
updates['key-od-some-data1']= { size: newSize1 };
updates['key-od-some-data2']= { size: newSize2 };
items.update(updates);
  

К сожалению, я получаю эту ошибку:

зона.js: 140 Ошибка без обнаружения: Ошибка в ./AppComponent class AppComponent — встроенный шаблон:30:2, вызванная: Метод требует ключа, моментального снимка, ссылки или развернутого снимка. Получено: объект

Возможно ли вообще обновление с разветвлением данных в базу данных с помощью angularfire2? Работает ли разветвление данных только с одним и тем же ключом объекта или что-то в этом роде?

Комментарии:

1. у вас есть пример того, как получить key с помощью AF2? Я пытаюсь сделать то же самое, но при вызове я сталкиваюсь с ошибкой TS child('/path').push().key();

2. Вы имеете в виду «ключ», который вы только что создали? Это генерируется автоматически. Попробуйте key=child('/path').push(); https://firebase.google.com/docs/database/web/read-and-write

3. Я просто получил это, выполнив items.push('new item').then(res => console.log(res.key)); спасибо, в любом случае

Ответ №1:

Заменить:

 const items = af.database.list('/items');
  

с:

 const items = af.database.object('/items');