Firebase realtimeDB not creating new object, but replacing the old object's content

Viewed 14

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 });

});
1 Answers

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 });
 // 
});
Related