Firebase Realtime Database中key的作用是什么?可否不使用key建库?
Firebase Realtime Database 节点Key的作用说明
你截图里高亮的内容就是Realtime Database的节点键(Key):
这类Key的必要性
- 最基础的逻辑:Realtime Database本质是层级化的JSON对象树,Key就是每个节点的唯一定位标识,和电脑本地文件的文件名作用完全一致。没有Key的话,你根本没法精准查询、修改、删除某条指定数据;而且同级节点下如果出现Key重名,新写入的数据会直接覆盖旧数据,这是JSON结构本身的硬性规则。
- 如果是
-N开头的一长串随机字符串Key,这是调用push()方法时SDK自动生成的Push ID,除了基础标识作用外还有两个实用特性:一是生成逻辑内置时间戳信息,所有Push ID天然按创建时间先后排序,不需要额外存储创建时间字段就能直接做时序查询;二是这个ID直接在客户端本地生成,不需要等待服务端返回结果,离线状态下写入数据也不会出现Key冲突,特别适合聊天消息、评论、用户动态这类持续新增的时序列表场景。
能不能不用这类Key创建数据库
完全不使用Key是不可能的。只要你往Realtime Database里存储数据,每个节点就一定会对应一个Key,不存在无Key的悬空节点。
你可以选择不用SDK自动生成的Push Key,自行定义Key值:比如存储用户资料时用用户UID作为Key,存储全局配置时用语义化固定字符串(比如min_supported_version)作为Key,这类操作都是完全支持的。但自定义Key只适合你能100%保证同级节点下Key唯一、且不需要自动时序排序的场景,如果是存储不断新增的列表类数据,自行生成Key很容易出现数据覆盖、排序错乱的问题,直接用官方push()方法生成自动Key是最稳妥、成本最低的方案。
内容的提问来源于stack exchange,提问作者M Talha Sohail
相关产品推荐
相关产品推荐

