首页 > 解决方案 > 如何在地图字段中创建唯一 ID?

问题描述

数据结构

Countries (Collection)
|
--- 5nHsOxXPPenciyejILWP (Document)
    |
    --- Country Name (Map)
        |
        --- en (String) => Germany
        --- ar (String) => ألمانيا
        --- es (String) => Alemania
        --- it (String) => Germania
        --- de (String) => Deutschland
        --- ru (String) => Германия
    --- Cities (Map)
        |
        --- Berlin (String) => Berlin
        --- Munich (String) => Munich
        --- Frankfurt (String) => Frankfurt

Posts (Collection)
|
--- RhwFwkvSZ2WCh2K1O7xg (Document)
    |
    --- Title (String) => ...
    --- Description (String) => ...
    --- Country ID (String) => 5nHsOxXPPenciyejILWP
    --- City ID (String) => Berlin

Cities现场,我希望键是唯一的 ID,b4ejx8nUIFrXE0EkVrbs而不是使用城市名称。

我目前正在这样做,Berlin (String) => Berlin但我希望它是这样b4ejx8nUIFrXE0EkVrbs (String) => Berlin的,并且在Posts收藏中它必须是这样的,City ID (String) => b4ejx8nUIFrXE0EkVrbs而不是City ID (String) => Berlin.

我可以通过在集合中创建一个子集合来解决这个问题,Countries在这种情况下,每个城市都会有一个唯一的 ID,但是这种情况会花费我大量的读取而不是 1 次只读。

有没有办法创建一个看起来像这样的唯一 IDSKwFaGBYimiFBLUbZ9Oe, aXNTJsW6f6nTOsU7NBNO, EG1lo3Bbcnv9SJwLUGt5, q4QdEz3QPpvWu39gwpuK, etc...而不是城市名称?

标签: firebasegoogle-cloud-firestore

解决方案


您始终可以生成自己的 ID 并在添加数据时使用它们。有像UUID这样的包,或者你甚至可以像这样从 Firebase SDK 获取这些随机 ID:

const randomId = firebase.firestore().collection('users').doc().id
// use this randomId while adding data

推荐阅读