为什么我不能通过循环将多个值插入 Firebase?

Why i can't insert a number of values into Firebase through loop?

出于分析原因,我只是想向 Firebase 中插入一些值。事实上,我正在为一个大学项目测试数据库。这个想法是为了获得插入和检索数据所需的时间。

我做的代码很简单,但它不会将我想要的消息数插入数据库。

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

}

这是插入 Firebase 实时数据库的数据的图像。

如您所见,数据是随机插入的。为什么会这样?提前致谢。

使用 Date.now() 作为您的节点名称将导致多个节点在同一毫秒结束。由于 Firebase 中的键根据定义是唯一的,这意味着您将覆盖同一时间戳上的先前结果。

稍微好一点的方法是将 i 的值也嵌入到键中,这样可以确保它们始终是唯一的:

firebase.database().ref("History/" + i + "_" + Date.now()).set(messageObj)

更好的方法是使用 Firebase 的内置 push 操作,它可以完全防止此类问题(以及许多其他问题):

firebase.database().ref("History/").push(messageObj)