У меня есть несколько полей ввода, которые я использую для преобразования в объект, а затем использую этот объект для рендеринга в карточку.
Я научился .push
или .set
объект в Firebase, измените значения и удалите всю карту.
Но теперь я хотел бы иметь возможность отображать все объекты, существующие в моей Firebase, для всех, кто открывает приложение. Как мне это сделать?
Данные выглядят следующим образом:
project-library-7e667
- Book
- MDXCUa-3s5yX-Iv8u7X
contrib: "Me"
fname: "Albert"
lname: "Camus"
own: false
pubDate: "1942"
title: "L'Etranger"
Карты отрисовываются после того, как пользователь вводит информацию с помощью function addBookToLibrary()
, который использует функцию обратного вызова render()
вот так:
function addBookToLibrary() {
let title = document.querySelector("#title").value;
let fname = document.querySelector("#fname").value;
let lname = document.querySelector("#lname").value;
let pubDate = document.querySelector("#pubDate").value;
let contrib = document.querySelector("#contrib").value;
let own = document.querySelector("#own").checked;
var addBook = new Book(title, fname, lname, pubDate, contrib, own);
newPostKey = firebase.database().ref().child('Book').push().key;
firebase.database().ref().child('Book').child(newPostKey).set(addBook);
render();
form.reset();
};
function render() {
const bookContainer = document.createElement("div");
bookContainer.classList.add("book-container");
const newVolume = document.createElement("div");
newVolume.classList.add("volume");
bookContainer.appendChild(newVolume);
bookContainer.setAttribute('id', `${newPostKey}`);
const frontCover = document.createElement("div");
newVolume.appendChild(frontCover);
let TitleRef = firebase.database().ref('Book/' + newPostKey + '/title');
TitleRef.on('value', function(snapshot) {
titlesnap = snapshot.val();
});
...
frontCover.innerHTML = "<br /><br />"
+ "<b>" + titlesnap + "</b>" + "<br /><br />"
+ fnamesnap + " "
+ lnamesnap + "<br /><br />"
+ "Published: " + pubsnap + "<br />"
+ "Added by: <br />" + contribsnap + "<br />";
...
Если я позвоню render()
по тому, что существует в базе данных, какие должны быть параметры?
Я знаю, что мне, вероятно, придется сделать for
l oop, но это не похоже ни на одну из этих работ:
render(MDXCUa-3s5yX-Iv8u7X);
render(firebase.database().ref().child('Book').child('MDXCUa-3s5yX-Iv8u7X'));
Надо ли sh выйти и добавьте все аргументы, например:
let TitleRef = firebase.database().ref('Book/' + newPostKey + '/title');
TitleRef.on('value', function(snapshot) {
titlesnap = snapshot.val();
});
, а затем создайте из них объект для передачи в render()
?
Честно говоря, я немного запутался в понимании, какие аргументы render()
на самом деле использует . console.log(arguments)
дал мне конструктор, а console.log(arguments[0])
дал мне undefined
. Как бы я это нашел в противном случае?