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。为什么他们不提供稳定的密钥以便开发人员可以一致地调用它???

4

1 回答 1

2

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

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

snapshot.ref().toString()

为了获取 URL。

于 2013-07-19T23:26:25.273 回答