Firestore自动生成的ID是否包含_下划线?

时间:2018-06-04 09:46:07

标签: firebase google-cloud-firestore

我有一个简单的逻辑,它将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是否存在冲突?

enter image description here

compositeKey不用于Firestore中的直接查询。它用于URL路由。我有一个路线localhost:4200/relationship/follwerId_followId

我会在Angular中读取relationship/:id,然后用_下划线分割,最后查询.collection('user_profile').doc(followerId).collection('user_profile').doc(followedId)以在单个页面中显示两个用户的个人资料。

1 个答案:

答案 0 :(得分:0)

唯一认为你可以做到这一点的是找到一种数据格式,让你100%确定该模式不会被Firebase随机复制。

Firestore密钥使用修改后的Base64字母表,就像使用Firebase实时数据库一样:

-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz

它们是通过时间戳和随机值实现的。你可以找到算法here

Firebase有一小组不允许的字符,它们列在this answer中:

  

字符集限制

     

请注意,用于构建Firebase引用的网址可能包含任何内容   unicode字符除了:

     
      
  • 。 (周期)
  •   
  • $(美元符号)
  •   
  • [(左方括号)
  •   
  • ](右方括号)
  •   
  • #(哈希或井号)
  •   
  • /(正斜线)
  •