这对你们中的一些人来说可能是理所当然的事情,但我不确定它是否可能。
使用 AngularFire,我想缩短推送时创建的生成的 uid。为什么? 因为我想构建一个函数来共享 Firebase 中动态路径的链接,所以而不是
https://url.firebaseio.com/lists/-KGhj0n_wN1xyhtu7HOR
我想要类似的东西
https://url.firebaseio.com/AbcDe
“生成器”将构建一个新的 uid,但仍引用 “-KGhj0n_wN1xyhtu7HOR”。
这可能吗?值得吗?或者有更好的方法吗?
最佳答案
是的,听起来完全可行。创建一个新的顶级列表,在其中将短链接映射到列表 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
下。它节省了您的查找时间。
关于javascript - 可以生成 Firebase UID 的短链接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36971122/