我正在尝试创建一个 Python 函数,该函数在我的 Firebase 实时数据库中生成一个有效的密钥(使用与其他密钥相同的逻辑,确保没有冲突和按时间顺序排列)。
像这样:
def get_new_key() -> str:
return db.reference(app=firebase_app).push().key
print(get_new_key())
# output: '-OOvws9uQDq9Ozacldjr'
但是,按照文档中的说明,这样做实际上会创建一个具有空字符串值的节点。有没有办法在不向数据库添加任何内容的情况下获取密钥?
我现在唯一的想法就是自己重新实现他们的密钥生成算法,但如果这个算法发生变化,这看起来就有些过度了,而且不具有面向未来性。
没错,每次调用
push(value='')
实时数据库时都会创建一个子节点。如果调用函数时没有传递任何值,则用于写入数据的默认字符串将为空字符串。据我所知,Python 版 Firebase SDK 并未公开提供仅
push()
生成 ID的函数。因此,您唯一的选择就是使用下面提供的算法:它是用 JavaScript 编写的,但我认为你可以很容易地将它适配到 Python 中。该算法非常稳定,而且我认为它不会改变,因为许多客户端(Android、iOS 和 Web)都依赖于它。
以下是 Firebase 的 Python 实现
generatePushID()
(未经测试):