为什么我不能通过循环将多个值插入 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)
出于分析原因,我只是想向 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)