【问题标题】:Why does the url property key in Firebase snapshot keep changing?为什么 Firebase 快照中的 url 属性键不断变化?
【发布时间】:2013-07-20 07:26:25
【问题描述】:

到目前为止,我还没有看到任何讨论或意识到 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。为什么他们不提供稳定的密钥以便开发人员可以一致地调用它???

【问题讨论】:

    标签: firebase


    【解决方案1】:

    Firebase.js 是一个编译脚本。每次我们编译并发布新版本时,内部变量的名称都会发生变化,因此您绝对不应依赖我们网站上未记录的任何属性。

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

    snapshot.ref().toString()
    

    为了获取 URL。

    【讨论】:

    • 感谢您的快速响应!作为一个建议,我会说文档可以更清晰。您为我提供的内容很明确:要从“快照”中获取数据记录的 URL,我只需编写 snapshot.ref().toString() 代码。但是 Firebase 文档使 ref() 似乎是 Firebase 用户创建的东西: >>>Usage var ref = new Firebase('SampleChat.firebaseIO-demo.com/users'); var query = ref.limit(5); var refToSameLocation = query.ref();
    • 进一步说明:我通过 push() 或 set() 创建记录,而不是通过设置 URL,但文档示例似乎与设置 URL 的用户相关。
    • 谢谢。我会看看我们能做些什么。 :-)
    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2022-01-06
    • 2010-09-21
    • 1970-01-01
    • 2012-02-03
    • 2022-11-11
    相关资源
    最近更新 更多