我有一个简单的逻辑,它将2个firestore id与_组合,即id1_id2。在检索复合键时,我使用_分割它。因此,Firestore的自动生成的id是否可能包含_下划线,因此在使用_下划线分割时破坏了我的简单逻辑?
我通过AngularFire2使用带有Angular的Firestore。
简化的摘录。
constructor(private afs: AngularFirestore) {
const id1 = this.afs.createId();
const id2 = this.afs.createId();
const compositeKey = id1 + '_' + id2;
}
我需要compositeKey,因为我想通过Google Developer Expert实现an example in here:示例relationships/{followerID_followedID}
。还有其他可能的方法来实现相同的结果。但是,在教授使用compositeKey的教程中,我想了解使用_ underscore分割2个ID是否存在冲突?
compositeKey不用于Firestore中的直接查询。它用于URL路由。我有一个路线localhost:4200/relationship/follwerId_followId
我会在Angular中读取relationship/:id
,然后用_下划线分割,最后查询.collection('user_profile').doc(followerId)
和.collection('user_profile').doc(followedId)
以在单个页面中显示两个用户的个人资料。
答案 0 :(得分:0)
唯一认为你可以做到这一点的是找到一种数据格式,让你100%确定该模式不会被Firebase随机复制。
Firestore密钥使用修改后的Base64字母表,就像使用Firebase实时数据库一样:
-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
它们是通过时间戳和随机值实现的。你可以找到算法here。
Firebase有一小组不允许的字符,它们列在this answer中:
字符集限制
请注意,用于构建Firebase引用的网址可能包含任何内容 unicode字符除了:
- 。 (周期)
- $(美元符号)
- [(左方括号)
- ](右方括号)
- #(哈希或井号)
- /(正斜线)