Estou tentando criar uma função Python que gere uma chave válida no meu Firebase Realtime Database (usando a mesma lógica de outras chaves, garantindo nenhuma colisão e ordem cronológica).
Algo assim:
def get_new_key() -> str:
return db.reference(app=firebase_app).push().key
print(get_new_key())
# output: '-OOvws9uQDq9Ozacldjr'
No entanto, fazer isso, na verdade, cria o nó com um valor de string vazio, conforme especificado na documentação . Existe alguma maneira de obter a chave sem adicionar nada ao banco de dados?
Meu único pensamento agora seria reimplementar o algoritmo de geração de chaves , mas isso parece exagero e não é à prova do futuro se o algoritmo mudar.
Você está certo, cada vez que você chamar
push(value='')
um nó filho, ele será criado no Realtime Database. Se você chamar a função sem passar um valor, a string padrão usada para gravar os dados será uma string vazia .Até onde eu sei, o Firebase SDKs para Python não expõe publicamente uma
push()
função que apenas gere os IDs. Portanto, a única opção que você tem seria usar o algoritmo apresentado abaixo:Ele é escrito em JavaScript, mas acho que você pode adaptá-lo facilmente para Python. Este algoritmo é muito estável e não acho que vá mudar, pois muitos clientes (Android, iOS, Web) dependem dele.
Aqui está uma implementação Python do Firebase
generatePushID()
(não testada):