可以生成Firebase UID的短链接?

时间:2016-05-01 19:42:06

标签: javascript angularjs firebase angularfire

对于你们中的一些人来说,这可能是没有道理的,但我不确定它是否可能。

使用AngularFire,我想缩短在推送时创建的生成的uid。为什么? 因为我想构建一个函数来共享Firebase中动态路径的链接,而不是

https://url.firebaseio.com/lists/-KGhj0n_wN1xyhtu7HOR

我想要像

这样的东西
https://url.firebaseio.com/AbcDe

“生成器”会构建一个新的uid,但仍然会引用 “-KGhj0n_wN1xyhtu7HOR”。

是否可能,是值得还是有更好的方法来接近它?

1 个答案:

答案 0 :(得分:1)

是的,听起来完全可行。创建一个新的顶级列表,您可以在其中将短链接映射到列表ID。

shortlinks: {
  "AbcDe": "-KGhj0n_wN1xyhtu7HOR"
}

现在当有人进入短链接时,您只需使用以下命令查找实际的列表ID:

ref.child('shortlinks').child(shortlinkFromUrl).once('value', function(snapshot) {
  if (snapshot.exists()) {
    // TODO: load the list with key snapshot.val()
  }
  else {
    console.error('That's a non-existing shortlink');
  }
})

你必须弄明白的剩余问题

  • 您将如何生成短链接? Firebase推送ID(当您拨打$firebaseArray.$add()Firebase.push()时获得的内容)保证是唯一的,这是他们这么长时间的原因之一。较短的链接更容易记忆,但你必须找到一些方法来保证它们的独特性。请参阅How do you prevent duplicate user properties in Firebase?的已接受答案,但也可能还有十几个其他问题。
  • 如果您找到一种方法来生成对于您的用例而言足够独特的较短链接,为什么不将它们用作列表的键?因此,不要将列表存储在-KGhj0n_wN1xyhtu7HOR下,而是将其存储在AbcDe下。它可以为您节省查询费用。