#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? Я пытаюсь сделать то же самое, но при вызове я сталкиваюсь с ошибкой TSchild('/path').push().key();
2. Вы имеете в виду «ключ», который вы только что создали? Это генерируется автоматически. Попробуйте
key=child('/path').push();
https://firebase.google.com/docs/database/web/read-and-write3. Я просто получил это, выполнив
items.push('new item').then(res => console.log(res.key));
спасибо, в любом случае
Ответ №1:
Заменить:
const items = af.database.list('/items');
с:
const items = af.database.object('/items');