首页 文章

为什么Firebase快照中的url属性键会不断变化?

提问于
浏览
0

到目前为止,我还没有看到任何讨论或意识,Firebase确实通过他们返回的“快照”为每个特定数据记录提供了一个唯一的标识符 - 实际上是完整的URL - 即数据记录周围的包装器(通过snapshot.val()访问) . 通过对快照进行基本属性检查,我发现可以使用唯一的URL(参见下面的示例) . 但是,由于某种原因,Firebase似乎每隔几天就会更改密钥的名称,导致我的应用程序崩溃 . 我必须进入并重新发现新的URL属性键并进行更改,以便它再次起作用 .

以下是我迄今为止看到关键变化的三个例子 . 每个值都相同,但密钥随时间不断变化(即:“Wb”,“Xb”,“bc”):

getMemberBySnapshot - snapshot has prop Wb with value https://prototype1.firebaseio.com/users/-IwohKfw1l5F3gFqyJJ5

getMemberBySnapshot - snapshot has prop Xb with value https://prototype1.firebaseio.com/users/-IwohKfw1l5F3gFqyJJ5

getMemberBySnapshot - snapshot has prop bc with value https://prototype1.firebaseio.com/users/-IwohKfw1l5F3gFqyJJ5

我已经阅读了Firebase的建议,即开发人员应该使用电子邮件地址,如果他们想要一个唯一的密钥(如果我的模型不使用电子邮件字段怎么办?如果用户想要更改他们的电子邮件怎么办?),或者Firebase建议可以检索所有现有的记录,然后在客户端上搜索它们 . 这些解决方案都不令人满意 . 但我发现他们确实为“快照”中的每个数据记录提供了唯一的URL . 为什么他们不提供稳定的密钥,以便开发人员可以一致地调用它?

1 回答

  • 2

    Firebase.js是一个已编译的脚本 . 每次编译它们并发布新版本时,内部变量的名称都会改变,所以你绝对不应该依赖我们网站上没有记录的任何属性 .

    对于您的具体情况,您应该使用:

    snapshot.ref().toString()
    

    为了获取URL .

相关问题