Solo estoy tratando de insertar una cantidad de valores en Firebase, por razones de análisis. De hecho, estoy probando la base de datos para un proyecto universitario. La idea era obtener el tiempo que lleva insertar y recuperar datos.
El código que estoy haciendo es simple, pero no insertará en la base de datos la cantidad de mensajes que quiero.
function sendMessage(times){ for(let i = 0; i < times; i++){ console.log(i); // this prints 50 times let messageObj = { user: "testUser" + i, message: "message" + i }; firebase.database().ref("History/" + Date.now()).set(messageObj); // this executes only a random number of times } window.onload = function () { sendMessage(50); }Aquí hay una imagen de los datos insertados en Firebase Realtime Database.
Como puede ver, los datos se están insertando de forma aleatoria. ¿Por qué está pasando esto? Gracias por adelantado.
El uso Date.now() para el nombre de su nodo dará lugar a que varios nodos terminen en el mismo milisegundo. Y dado que las claves en Firebase son únicas por definición, eso significa que está sobrescribiendo el resultado anterior en la misma marca de tiempo.
Un enfoque ligeramente mejor es incorporar también el valor de i en la clave, lo que garantiza que siempre sean únicos:
firebase.database().ref("History/" + i + "_" + Date.now()).set(messageObj) Aún mejor sería usar las operaciones push integradas de Firebase, que evitan este tipo de problema (y muchos otros) por completo:
firebase.database().ref("History/").push(messageObj)