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