'Firebase realtimeDB not creating new object, but replacing the old object's content
I wanted to store each input i submit, so i used firebase realtimeDB i modified the event of submiting with the code under, but each time its not creating a new file but replacing the old one's content Any solutions?? thanks
const db = getDatabase();
let d = new Date();
form.addEventListener("submit", (event) => {
event.preventDefault();
let inp = document.getElementById("inp").value;
set(ref(db, "newSec/" + d.getTime()), { message: inp });
});
Solution 1:[1]
You're creating the d value once, no matter how often the form is submitted. To get a new date for each time the form is submitted:
const db = getDatabase();
form.addEventListener("submit", (event) => {
event.preventDefault();
const d = new Date(); // ?
const inp = document.getElementById("inp").value;
set(ref(db, "newSec/" + d.getTime()), { message: inp });
});
Or shorter:
const db = getDatabase();
form.addEventListener("submit", (event) => {
event.preventDefault();
const inp = document.getElementById("inp").value;
set(ref(db, "newSec/" + Date.now()), { message: inp });
// ?
});
On Firebase I'd recommend using its built-in push operation though, which does chronological ordering - but also works reliably even when you have many users doing this at the same time:
const db = getDatabase();
form.addEventListener("submit", (event) => {
event.preventDefault();
const inp = document.getElementById("inp").value;
push(ref(db, "newSec"), { message: inp });
// ?
});
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Frank van Puffelen |
