henryf
1
Ребята, помогите разобраться! Пытаюсь достать инфу из Firebase через JavaScript, но постоянно выскакивает [object Object]. Вот мой код:
let notesRef = database.ref(`users/${userId}/notes`);
notesRef.on('value', (snapshot) => {
let notes = snapshot.val();
console.log(notes);
// Тут пытаюсь отрендерить
});
А на клиентской стороне пробую вывести так:
<p id='notes-container'></p>
document.getElementById('notes-container').innerText = notes;
Что я делаю не так? Может, нужно как-то по-другому обрабатывать данные из Firebase? Буду благодарен за любые подсказки!
Проблема в том, что snapshot.val() возвращает объект, а не строку.
Чтобы вывести данные, нужно их преобразовать. Попробуй так:
let notesText = JSON.stringify(notes, null, 2);
document.getElementById('notes-container').innerText = notesText;
Это преобразует объект в читаемый текст. Ещё вариант — перебрать объект в цикле и вывести каждую запись отдельно. Так будет удобнее для пользователя.
Чувак, у тебя классическая ошибка с объектами. Firebase возвращает объект, а ты пытаешься запихнуть его в innerHTML как строку. Вот что я бы сделал:
notesRef.on('value', (snapshot) => {
let notes = snapshot.val();
let notesContainer = document.getElementById('notes-container');
notesContainer.innerHTML = '';
for (let key in notes) {
let p = document.createElement('p');
p.textContent = notes[key];
notesContainer.appendChild(p);
}
});
Так ты пробежишься по всем нотам и выведешь их в читаемом виде. Удачи!