在Firebase中向对象数组推送数据时如何获取UUID?
在Firebase Realtime Database推送数据时获取生成的UUID(Push键)
你可以通过两种方式获取Firebase push() 方法生成的唯一ID:
方法1:提前获取ID(写入数据前)
先创建push引用,此时Firebase已经生成了唯一键,你可以先拿到这个ID,再执行写入操作,适合需要把ID包含在数据本身的场景:
// 创建push引用,生成唯一ID const newSensorRef = push(ref(db, `/users/${auth.currentUser.uid}/user/sensors`)); // 获取生成的UUID const sensorId = newSensorRef.key; // 写入数据,可选择将ID存入数据中 newSensorRef.set({ sensorId: sensorId, // 建议避免和你原有的id字段重名,这里改名为sensorId name: registerInformation.nameBox, id: registerInformation.idBox, categories: registerInformation.categories, routine: registerInformation.routine, });
方法2:写入完成后获取ID
通过push()返回的Promise,在数据写入成功后从快照中提取ID:
push(ref(db, `/users/${auth.currentUser.uid}/user/sensors`), { name: registerInformation.nameBox, id: registerInformation.idBox, categories: registerInformation.categories, routine: registerInformation.routine, }) .then((snapshot) => { // 从快照的引用中获取生成的UUID const sensorId = snapshot.ref.key; console.log("新传感器的唯一ID:", sensorId); // 这里可以执行后续依赖该ID的逻辑 }) .catch((error) => { console.error("数据写入失败:", error); });
注意:你原代码中的id字段和Firebase生成的push键如果重名,建议修改其中一个的命名,避免数据混淆。
内容的提问来源于stack exchange,提问作者user12368091
相关产品推荐
相关产品推荐

