如何在推送 Firebase Admin Python SDK 之前获取数据库密钥



我在AWS Lambda Function中使用Firebase Admin Python SDK。 我想在一次更新中推送数据库多个对象。

for mess in arrayMessages:
...
newMessageKey = root.child('.../messages').push().key
messages_updates[newMessageKey] = {
'author': 'Bob',
'dateTime': d,
'text': mess,
}
messagesKeys.append(newMessageKey)
...

root.child(''.../messages').set(messages_updates)

"...push((.key"方法,立即在数据库上创建密钥(然后直接在一个命令中移动是有意义的,但会失去更新的效率(。 在不推送的情况下进行更新,插入增量整数键(平凡序列 0,1,2 ...

就像适用于Android 客户端的 SDK(旨在获取密钥甚至离线(一样,是否有一种解决方案可以在数据库上创建对象之前获取密钥?

截至 2021 年 9 月,它是: https://firebase.google.com/docs/database/admin/save-data#getting-the-unique-key-generated-by-push

引用@JW_的评论。

旧答案:

无法使用管理员 SDK。 但是,有一个JS代码的python端口用于在客户端生成ID。

Firebase团队的Michael Lehenbauer在一篇博客文章中描述了这一实现。在那里,您还可以找到指向实现的GitHub要点的链接,该要点又带有指向上述python实现的链接的注释。

以下内容会有所帮助吗?

new_message = root.child('.../messages').push({
'author': 'Bob',
'dateTime': d,
'text': mess,
})
messagesKeys.append(new_message.key)

基于实时数据库 REST API 的数据库客户端(如 Python Admin SDK(不支持在客户端生成 ID。所以这是你得到的最佳选择。FWIW,像上面所做的那样进行 2 次 API 调用也不是那么糟糕。SDK 将在下面重复使用相同的 HTTP 连接,并尝试降低延迟。

最新更新