javascript - 如何消除额外的uid出现在firebase push中
问题描述
我目前对我的 firebase 数据库有以下推送查询。
setVisitorAttendanceDate = (orgId, attendeeUid, date) => this.db.ref(`organization/${orgId}/visitor-attendance/${date}`).push({[attendeeUid]: true});
这将创建以下内容:
- visitor-attendance
- 2020-11-30-PM
-MNSIxmbzLwlW5Dq83Ws
-MNSIxm_woAnBAkVQWRV: true
它按预期添加日期,但添加了一个额外的 UID。
在它为对象添加此 uid 的日期之后:
-MNSIxmbzLwlW5Dq83Ws
如果没有那个 UID,我怎么能做到这一点?所以这
- visitor-attendance
- 2020-11-30-PM
-MNSIxm_woAnBAkVQWRV: true
解决方案
请记住,实时数据库中的所有内容都是键:值对。当定义了路径并且您 .push 在该路径中时,将创建一个具有子键:值对的节点,该节点位于该路径的“下方”。
如果您查看代码,您实际上是在定义数据的路径,其中最后一个组件是date
this.db.ref(`organization/${orgId}/visitor-attendance/${date}`).push({[attendeeUid]: true});
^^^ path ^^^ key ^^^ value
路径是
organization
orgId
visitor-attendance
date
the pushID
MNSIxm_woAnBAkVQWRV: true
每次将新子项添加到指定的 Firebase 引用时,push() 方法都会生成一个唯一键。
一种可能的解决方法是使用 .set 如指南中所示
对于基本的写入操作,您可以使用 set() 将数据保存到指定的引用,替换该路径中的任何现有数据。
firebase.database().ref('users/' + userId).set({
username: name,
email: email,
profile_picture : imageUrl
});
推荐阅读
- c++ - 在调用基 ctor 时是否应该将 args 复制到继承的构造函数?
- php - textarea 数据未以表格形式显示 - 但正在保存到数据库中,有人知道为什么吗?
- xaml - Xamarin Forms Carousel 视图绑定问题
- spring-boot - 如何将免费在线源生成的 Sitemap.xml 和 Robot.txt 文件集成到 Spring Boot 应用程序中
- linux - 在匿名 elf 文件上调用 execl 是否安全?
- node.js - Mongo 不会将数据保存到磁盘中
- java - Maven:在项目之间共享资源
- java - toString() 解释中的“....当在倒数第二个语句中需要字符串时”
- javascript - 使用 osm 地图、javascript 代码和 OpenLayers 库进行地理编码
- python-3.x - 无法使用 pd.xlsxwriter 使用自定义值解锁单元格