我想为我在实时数据库中存储的一些对象创建一个唯一的 id,但我希望该 id 位于对象本身中。有没有两种方法可以在没有 3 停止过程的情况下做到这一点,例如推送对象,读取密钥,使用密钥更新数据库的 id 字段?
换句话说,如果我想让我的数据库看起来像这样:
properties:
-Mfq1Ek2geCnkol7EbeW:
id: "-Mfq1Ek2geCnkol7EbeW"
buyer: "ab3s3aga"
seller: "b3skela"
-Mq1Em5a3skfjal3EjkVDMN:
id: "-Mq1Em5a3skfjal3EjkVDMN"
buyer: "zk39xlal"
seller: "34kzla99dl"
有没有办法做到这一点而不必向数据库写入两次?
答案 0 :(得分:0)
当您不带参数调用 push()
时,它是一个纯粹的客户端操作,会生成一个新的 DatabaseReference
对象。您可以从这个新对象中获取 key
。
因此(在 JavaScript 中)您可以通过以下方式获取新密钥:
let newKey = ref.push().key;
或者你可以像这样保留引用和密钥:
let newRef = ref.push();
let newKey = newRef.key;
然后使用以下命令为新引用设置一个值:
newRef.set(...);